R 为什么';t df$”;columnname";在函数中工作?
为什么我不能在函数中使用R 为什么';t df$”;columnname";在函数中工作?,r,R,为什么我不能在函数中使用df$“columnname”检索一个列,而在函数之外它却可以正常工作 使用数据帧: > df <- as.data.frame(cbind(col1=c(0,1), col2=c(2,3))) > df col1 col2 [1,] 0 2 [2,] 1 3 但是,当我使用[[]]表单时,它工作得非常好: > df_fn2 <- function(name) { df[[name]] } > df_
df$“columnname”
检索一个列,而在函数之外它却可以正常工作
使用数据帧:
> df <- as.data.frame(cbind(col1=c(0,1), col2=c(2,3)))
> df
col1 col2
[1,] 0 2
[2,] 1 3
但是,当我使用[[]]
表单时,它工作得非常好:
> df_fn2 <- function(name) { df[[name]] }
> df_fn2("col1")
[1] 0 1
>df_fn2 df_fn2(“col1”)
[1] 0 1
环顾四周,并没有看到任何答案(尽管很难搜索像$这样的符号)。实际上,我可以很好地使用
[[]]
表单,但我很好奇R的内部是什么导致了这一点。根据jeremycg的评论查看?“$”
文档:
x$name is equivalent to x[["name", exact = FALSE]]
只要输入df$“col1”
就可以了。当输入df_fn(“name”)
时,它不起作用,因为根据文档,它实际上是在试图将“name”
作为一列进行查找。这里的证据是:
> df <- as.data.frame(cbind(col1=c(0,1), col2=c(2,3), name=c(4,5)))
> df_fn("name")
[1] 4 5
>df\u fn(“名称”)
[1] 4 5
如果您需要符号的帮助,只需使用引号=?“$”
谢谢。我可能错过了,但我在文档中没有看到任何关于这一点的内容?文档中提到的x$name相当于x[[“name”,exact=FALSE]]
,但在函数中使用该表单仍然可以正常工作。(也就是说,按照我的预期检索列:df_fn3没关系,我看到了。谢谢。请看一下$
。基本上,R将df$name
解释为df[[“name”]]
,而不是将name解析为“col1”
美元函数不计算其第二个参数。它需要是一个列名,而不是以列名作为其值。。
> df <- as.data.frame(cbind(col1=c(0,1), col2=c(2,3), name=c(4,5)))
> df_fn("name")
[1] 4 5