Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 为什么';t df$”;columnname";在函数中工作?_R - Fatal编程技术网

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