Есть ли способ вернуть все объекты, определенные в функции в R?
Вот небольшой пример того, что я пытаюсь сделать. Я хочу вернуть все, что я назначил значение внутри этой функции (dave
, mark
, xx
, z
(если существует)). Оператор печати излишен.
Обычно я бы даже не пытался это сделать, просто я конвертирую файл source
d в функцию, а ранее все объекты были получены из глобальной среды, это то, что мне все еще нужно, и я бы не стал создавать огромный список всех объектов в конце функции. В идеале после запуска функции все объекты находятся в глобальной среде и могут быть доступны из списка. (Автоматически исключать из списка и оставлять их как отдельные объекты было бы замечательно.) Возможно, это должен быть класс?
Выдает ошибку, если какой-либо из них NULL
, если, например, y
предоставляется как NULL
в аргументах определения функции (т.е. test_func <- function(x = c(1, 2), y = NULL) ...
).
test_func <- function(x = c(1, 2), y = 3) {
xx <- x * x
if(!is.null(y)) z <- x * y
mark <- "hello"
dave <- data.frame(x = x, xx = xx)
whatshere <- ls()
print(whatshere)
whatsout <- list()
for (i in 1:length(whatshere)) {
whatsout[[i]] <- get(whatshere[[i]])
}
names(whatsout) <- whatshere
return(whatsout)
}
test_func()
#> [1] "dave" "mark" "x" "xx" "y" "z"
#> $dave
#> x xx
#> 1 1 1
#> 2 2 4
#>
#> $mark
#> [1] "hello"
#>
#> $x
#> [1] 1 2
#>
#> $xx
#> [1] 1 4
#>
#> $y
#> [1] 3
#>
#> $z
#> [1] 3 6
Создано в 2020-03-03 пакетом Представлять (v0.3.0)