【问题标题】:Difference between $ and [] in data.frame inside functions [duplicate]函数内部data.frame中$和[]之间的区别[重复]
【发布时间】:2013-11-06 23:26:57
【问题描述】:

我们来介绍两个函数:

test_f <- function(df, var) {
  print(df$var)
}

test_s <- function(df, var) {
  print(df[, var])
}

还有df 本身:

df <- data.frame(c(0:10))
colnames(df) <- "X"

我在运行时缺少什么,$ 版本返回NULL,但[] 正确打印结果:

> test_f(df, "X")
NULL
> test_s(df, "X")
 [1]  0  1  2  3  4  5  6  7  8  9 10

【问题讨论】:

标签: r


【解决方案1】:

使用[ 方法有其优点,其中可以轻松指定所需的行和列(注意此处使用复数形式)并能够对data.framematrix

如果你想让你的函数工作,你必须使用eval(parse(...)) 来帮助 R 找出你想要提取的确切内容。

这是一个例子:

test_f <- function(df, var) {
  a <- deparse(substitute(df))
  b <- deparse(substitute(var))
  Get <- paste(a, b, sep = "$")
  eval(parse(text = Get))
}
test_f(df, X)
#  [1]  0  1  2  3  4  5  6  7  8  9 10

【讨论】:

  • 很好的答案。可以使用Get &lt;- paste("df", var, sep="$") 简化示例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-05
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 2013-08-02
  • 1970-01-01
相关资源
最近更新 更多