У меня есть функция, которая создает среду внутри нее, и я хочу назначить эту среду для глобальной среды. В настоящее время я сделать это путем присвоения условий для globalenv()
в качестве конечной стадии - следующим образом:эффективно перемещать среду изнутри функции в глобальную среду
funfun <- function(inc = 1){
dataEnv <- new.env()
dataEnv$d1 <- 1 + inc
dataEnv$d2 <- 2 + inc
dataEnv$d3 <- 2 + inc
assign('dataEnv', dataEnv, envir = globalenv())
}
Такое чувство, что я должен быть в состоянии сделать что-то сделать dataEnv
persisit когда функция funfun
концы (чтобы сохранить копирование окружающая среда в конце), однако мои попытки, такие как dataEnv <- new.env(parent = globalenv())
, не сработали.
Почему это не удается? Это возможно?
Также, что является наиболее эффективным способом сделать это?
Мои таблицы очень большие время от времени, и копирование станет проблемой по мере роста проекта.
Требуется ли возврат? Или достаточно ли просто иметь dataEnv в качестве конечной строки функции? Я вечно не уверен в обратных утверждениях в г. – ricardo
возврат не требуется, вы можете просто положить значение в конце. Если у вас есть сомнения по поводу стиля, я недавно прочитал этот http://google-styleguide.googlecode.com/svn/trunk/Rguide.xml. Я думаю, что в каком-то примере они используют 'return'. Но это всего лишь вопрос вкуса. – Usobi
Это похоже на вопрос «сбор мусора». Предположим, вы не вернули ссылку на окружающую среду? Как вы обнаруживаете существование 'dataEnv', так что если ничего больше вы не можете удалить, если не хотите? –