将参数传递给函数

时间:2011-01-11 12:12:29

标签: r arguments

我对将参数传递给R中的函数有一个理解问题。

在以下示例中,我按名称从命名列表中检索值。当我直接执行它时,它返回值。但是当我将相同的代码放入函数时,它返回NULL。这里发生了什么?

提前致谢, 米尔科

namedlist <- list(a=c("50", "80"), b=c("50")) 

namedlist$a
# returns: [1] "50" "80"

myfunction <- function(arg){ namedlist$arg }
myfunction(a)
# returns: NULL

1 个答案:

答案 0 :(得分:7)

您正在请求:

namedlist$arg

当然,"arg"中没有名称为namedlist的组件,因此返回值为NULL

这种类型的子集列表将起作用:

myfunction <- function(arg) {
    namedlist[[arg]]
}

并返回与namedlist $ a相同的内容,但您需要将组件名称作为字符串传递:

> namedlist$a
[1] "50" "80"
> myfunction(a)
Error in myfunction(a) : object 'a' not found
> myfunction("a")
[1] "50" "80"