函数在R

时间:2015-05-19 05:36:20

标签: r function

说我有一个功能

f <- function(){

  # do things

  return(list(zoo = x, vector = y, integer = z))
}

当我使用

调用此函数时
result <- f()

有没有办法明确调用返回变量?即我必须使用

来调用它
vara <- result$vara
varb <- result$varb
varc <- result$varc

因为这个函数返回了很多数据类型(无论是数据帧,动物园,矢量等)。我不想绑定到数据框的原因是因为并非所有变量都具有相同的长度。

1 个答案:

答案 0 :(得分:3)

使用withwithin

如果问题只是您不想输入result,那么您可以使用withwithin来访问列表中的元素。

with(result, vara + varb * varc)

这是一种很好的标准做事方式。

使用list2env

您可以使用list2env从列表中复制变量。

 list2env(result, parent.frame())

这有点冒险,因为您有两个变量副本可能会引入错误。如果要将代码包含在包中,则R CMD检查将为您提供有关全局变量的警告。

使用attach

这是一个非常糟糕的主意(不要这样做)。

attach就像with的永久版本。如果你

attach(result)

然后您可以访问不带result$前缀的每个元素。但是,如果在分离错误之前抛出错误,那么它会导致代码中出现许多可怕的,模糊的错误,然后再次附加它并淹没在变量范围沼泽中。