将参数传递给R中的函数我有一个理解问题.
在以下示例中,我按名称从命名列表中检索值.当我直接执行它时,它返回值.但是当我将相同的代码放入函数时,它返回NULL.这里发生了什么?
提前谢谢,Mirko
namedlist <- list(a=c("50", "80"), b=c("50"))
namedlist$a
# returns: [1] "50" "80"
myfunction <- function(arg){ namedlist$arg }
myfunction(a)
# returns: NULL
Run Code Online (Sandbox Code Playgroud)
你在请求:
namedlist$arg
当然,没有名称"arg"中的组件namedlist,因此返回值NULL.
这种类型的子集列表将起作用:
myfunction <- function(arg) {
namedlist[[arg]]
}
Run Code Online (Sandbox Code Playgroud)
并返回与namedlist $ a相同的内容,但您需要将组件名称作为字符串传递:
> namedlist$a
[1] "50" "80"
> myfunction(a)
Error in myfunction(a) : object 'a' not found
> myfunction("a")
[1] "50" "80"
Run Code Online (Sandbox Code Playgroud)