可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have an understanding problem with passing arguments to a function in R.
In the following example, I retrieve a value from a named list by name. When I do it directly, it returns the value. But when I put the same code into a function, it returns NULL. What happens here?
Thanks in advance, 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
回答1:
You are requesting:
namedlist$arg
and of course there isn't a component with the name "arg"
in namedlist
, hence the return value NULL
.
this type of subsetting the list will work:
myfunction <- function(arg) { namedlist[[arg]] }
and returns the same as namedlist$a, but you do need to pass the component name as a string:
> namedlist$a [1] "50" "80" > myfunction(a) Error in myfunction(a) : object 'a' not found > myfunction("a") [1] "50" "80"