我正在尝试使用以下函数对数据帧进行子集化。
SubsetDF <- function(DF, VAR, YEAR){
DF2 <- DF[DF$VAR <= YEAR, ]
return(DF2)
}
test <- SubsetDF(myData, "YEAR", 2000)
由此产生的&#34;测试&#34;是空的。我在这里错过了什么? 顺便说一句,如果我只是在下面做,那么结果数据帧就可以了。
myData[myData$YEAR <= 2010,]
答案 0 :(得分:4)
尝试
SubsetDF <- function(DF, VAR, YEAR){
DF2 <- DF[DF[VAR] <= YEAR, ]
return(DF2)
}
test <- SubsetDF(myData, "YEAR", 2000)
只需将DF$VAR
部分替换为DF[VAR]
答案 1 :(得分:2)
使用非标准评估的方法
d <- data.frame(YEAR = 1996:2005, x = 1:10)
test <- function(df, name, year){
df[eval(substitute(name), df) <= year, ]
}
test(d, YEAR, 2000)
请注意,year变量不作为字符传递(这是非标准评估的含义)。有关非标准评估的更多信息,请阅读此http://adv-r.had.co.nz/Computing-on-the-language.html