说我有一个功能
f <- function(){
# do things
return(list(zoo = x, vector = y, integer = z))
}
当我使用
调用此函数时result <- f()
有没有办法明确调用返回变量?即我必须使用
来调用它vara <- result$vara
varb <- result$varb
varc <- result$varc
因为这个函数返回了很多数据类型(无论是数据帧,动物园,矢量等)。我不想绑定到数据框的原因是因为并非所有变量都具有相同的长度。
答案 0 :(得分:3)
with
或within
如果问题只是您不想输入result
,那么您可以使用with
或within
来访问列表中的元素。
with(result, vara + varb * varc)
这是一种很好的标准做事方式。
list2env
您可以使用list2env
从列表中复制变量。
list2env(result, parent.frame())
这有点冒险,因为您有两个变量副本可能会引入错误。如果要将代码包含在包中,则R CMD检查将为您提供有关全局变量的警告。
attach
这是一个非常糟糕的主意(不要这样做)。
attach
就像with
的永久版本。如果你
attach(result)
然后您可以访问不带result$
前缀的每个元素。但是,如果在分离错误之前抛出错误,那么它会导致代码中出现许多可怕的,模糊的错误,然后再次附加它并淹没在变量范围沼泽中。