无法访问R中的数据子集

时间:2017-02-13 10:09:03

标签: r dataframe subset

我有一个包含20列的数据框df。我有一个用户定义的函数,其输入是变量名。我试图从数据框中提取特定列并返回它。但是在运行以下代码后出现错误:

p <- function(param){
    df <- read.csv("data.csv",header=TRUE,stringsAsFactors=FALSE)
    var_name <- eval(substitute(param))
    print(df$var_name)
}

该函数返回NULL。我怀疑问题出在df$var_name,但我不知道如何解决它。任何指针都会有所帮助。

2 个答案:

答案 0 :(得分:0)

试试print(var_name) 假设您的数据框没有列var_name。它可能不存在。假设你的功能正确!

答案 1 :(得分:0)

  

我有用户定义的函数,其输入是变量名,我是   尝试从数据框中提取特定列并返回   它

上面的句子毫无意义。变量名称与列名称不同。

如果您的数据框df包含a列,bc,那么dfa的变量名称, bc是列名(对于数据框df)。所以不,你的函数不输入变量名。它输入一个列名。

如果输入了变量名param,则构造eval(substitute(param))有意义。它会为您提供此名称的值,例如

 a <- 5
 b <- "a"
 eval(substitute(b))

打印5

由于您的param是列名,因此构造eval(substitute(param))没有任何意义。您应该以

的形式访问该列
df[[,param]]

(如果df是矩阵而不是数据框,则应该将其列作为df[,param]来访问。