У меня есть функция:Присвоить .GlobalEnv с Назначают
myfunctionIs=myfunct(x,y){
#Some calculations and assign my lists to globalenv
theList1<<-theList1
theList2<<-theList2
#Nested function
function(...){
theList1=get("theList1")
theList2=get("theList2")
##Some calculations...
#NamesList calculation
NamesList= ###Some Calculations
ListContainer=c(deparse(substitute(theList1)),deparse(substitute(theList2)))
for (i in seq_along(ListContainer)){
assign(ListContainer[i],mapply(function(x,y) {
##Some calculations
return(x)
},x=get(ListContainer[i],envir=parent.env(environment())),y=NamesList,SIMPLIFY = FALSE),
envir=.GlobalEnv)
}
}}
Я пытаюсь присвоить theList1 и theList2 обратно .GlobalEnv, но я получаю ошибку
Error in get(ListContainer[i], envir = parent.env(environment())) :
object 'structure(list("2002-12-31" = structure(list(Date = c("2000-01-31", ' not found
Я считаю, что ошибка исходит от
get(ListContainer[i],envir=parent.env(environment()))
Потому что calculations work correctly if I work in GlobalEnvironment
.
Любые идеи? С наилучшими пожеланиями
EDIT
Это работает: Изменить ListContainer
на:
ListContainer=c("theList1","theList2")
Был какой-то вопрос с deparse(substitute...
внутри функции.
Что вы действительно пытаетесь сделать? Этот код довольно грязный. Я могу заверить вас, что использование '<< -' и 'assign' почти не требуется, и я (почти) никогда их не использую. Вместо того, чтобы назначать объект globalEnv, почему бы вам не поместить все объекты в список и просто работать с этим? – Andrie
@Andrie Есть некоторые причины, по которым код грязный, но здесь нет вопроса;) И если вы его не используете, почему я не должен его использовать? – user1665355
Я не использую его, потому что, вероятно, гораздо проще. Вы просите «любые идеи». У меня много идей, но это очень поможет, если вы расскажете, что вы действительно хотите сделать. – Andrie