我有一个包含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
,但我不知道如何解决它。任何指针都会有所帮助。
答案 0 :(得分:0)
试试print(var_name)
假设您的数据框没有列var_name。它可能不存在。假设你的功能正确!
答案 1 :(得分:0)
我有用户定义的函数,其输入是变量名,我是 尝试从数据框中提取特定列并返回 它
上面的句子毫无意义。变量名称与列名称不同。
如果您的数据框df
包含a
列,b
,c
,那么df
是a
的变量名称, b
,c
是列名(对于数据框df
)。所以不,你的函数不输入变量名。它输入一个列名。
如果输入了变量名param
,则构造eval(substitute(param))
有意义。它会为您提供此名称的值,例如
a <- 5
b <- "a"
eval(substitute(b))
打印5
。
由于您的param是列名,因此构造eval(substitute(param))
没有任何意义。您应该以
df[[,param]]
(如果df
是矩阵而不是数据框,则应该将其列作为df[,param]
来访问。