sfu*_*fuj 0 indexing r function
许多R教科书鼓励使用$从data.frames ^中检索变量(列).但是,我发现这在函数内部不起作用,我无法弄清楚原因.
data(BOD)
print(BOD)
# These work.
BOD$'demand'
BOD[ ,'demand']
# This works.
myFunc1 <- function(x, y){
z <- x[ , y]
return(z)
}
out <- myFunc(BOD, 'demand')
# This doesn't work.
myFunc2 <- function(x, y){
z <- x$y
return(z)
}
out <- myFunc2(BOD, 'demand')
Run Code Online (Sandbox Code Playgroud)
我注意到在R语言定义中它说:
使用$的表单适用于列表和pairlists等递归对象.它只允许文字>字符串或符号作为索引.也就是说,索引是不可计算的:对于需要评估表达式以查找索引的情况,请使用x [[expr]].当$应用于>非递归对象时,结果总是为NULL:从R 2.6.0开始,这是一个错误.
myFunc2上面是一个例子,其中$没有提供文字字符串吗?
^ Zuur 2009'R'的初学者指南61页
^ Spector 2008'数据操作与R'p 26,64,69
小智 5
您也可以使用[[而不是$
myFunc2 <- function(x, y){
+ z <- x[[y]]
+ return(z)
+ }
> myFunc2(BOD, 'demand')
[1] 8.3 10.3 19.0 16.0 15.6 19.8
Run Code Online (Sandbox Code Playgroud)