将参数传递给函数
Posted
技术标签:
【中文标题】将参数传递给函数【英文标题】:Pass arguments to function 【发布时间】:2011-06-07 03:31:24 【问题描述】:我在将参数传递给 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】:您正在请求:
namedlist$arg
当然namedlist
中没有名称为"arg"
的组件,因此返回值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"
【讨论】:
@Mirko 此外,您在这里依赖于在全局工作空间中查找某些东西的范围。编写myfunction
是更好的做法,这样它是独立的,并且您将所有需要的对象作为参数传递。 myfunction <- function(list, arg)
并具有以下作为函数体list[[arg]]
,并通过myfunction(namedlist, "a")
调用它
我删除了我的,你的更完整:)以上是关于将参数传递给函数的主要内容,如果未能解决你的问题,请参考以下文章