使用R中的函数基于列值的子集数据帧

时间:2015-12-03 21:55:00

标签: r function subset

我正在尝试使用以下函数对数据帧进行子集化。

SubsetDF <- function(DF, VAR, YEAR){
   DF2 <- DF[DF$VAR <= YEAR, ]
   return(DF2)
 }

test <- SubsetDF(myData, "YEAR", 2000)

由此产生的&#34;测试&#34;是空的。我在这里错过了什么? 顺便说一句,如果我只是在下面做,那么结果数据帧就可以了。

 myData[myData$YEAR <= 2010,]

2 个答案:

答案 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