2

我们来介绍两个函数:

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
4

1 回答 1

4

使用该[方法有其优点,其中包括能够轻松指定所需的行和列(注意此处使用复数)以及能够对 adata.frame或 a使用相同的语法matrix

如果你想让你的函数工作,你必须使用它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
于 2013-10-28T09:15:57.010 回答