参数传递给函数

问题描述:

我有一个认识问题,将参数传递给在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 

您请求:

namedlist$arg

,当然没有名称为"arg"namedlist,因此返回值的组件NULL

这种类型的子集划分的名单将工作:

myfunction <- function(arg) { 
    namedlist[[arg]] 
} 

,并返回相同namedlist $一个,但你需要通过组件名称为一个字符串:

> namedlist$a 
[1] "50" "80" 
> myfunction(a) 
Error in myfunction(a) : object 'a' not found 
> myfunction("a") 
[1] "50" "80" 
+2

@Mirko此外,您还依赖于在全球工作空间中寻找某些东西的范围。编写`myfunction`将会是更好的做法,因为它是独立的,并且可以传入所有必需的对象作为参数。 `myfunction 2011-01-11 12:34:43