将参数传递给函数

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 &lt;- function(list, arg) 并具有以下作为函数体list[[arg]],并通过myfunction(namedlist, "a")调用它 我删除了我的,你的更完整:)

以上是关于将参数传递给函数的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA - 将参数参数传递给 Sub

将一个函数的所有参数传递给另一个函数

使用 match.call 将所有参数传递给其他函数

jQuery UI 问题。如何将参数传递给函数

将模板参数传递给调用成员函数的函数

将函数参数传递给 sql 查询