我对将参数传递给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
答案 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"