У меня есть функция в R, которая должна изменять список, добавляя в него новые элементы. Однако я действительно не хочу делать копию моего списка.
Я знаю, что это не простая задача в R, и я видел несколько минимальных примеров, использующих функцию eval.parent, но я не знаю, как они применимы к моему конкретному случаю.
Минимальный пример моей проблемы (не моей реальной функции) будет выглядеть как
L <- list(o1 = 1, o2 = 2, o3 = 3)
add_to_list <- function(L){
n1 <- sum(unlist(L))
n2 <- mean(unlist(L))
L$n1 <- n1
L$n2 <- n2
return(L)
}
L <- add_to_list(L)
Если я прав, так как L изменяется, функция add_to_list сделает полную копию L, включая o1, o2 и o3, в этом примере? (Похоже, когда я смотрю на время вычисления моей фактической функции.)
Я бы хотел передать L по ссылке, так как это значительно повысило бы производительность моего кода. В моем реальном примере есть более трех объектов o1, o2 и o3, и некоторые из них действительно большие, и у меня также есть много кода перед финальными назначениями, поэтому я хочу, чтобы он был модульным как функция.