【问题标题】:Subset dataframe based on column value using a function in R使用 R 中的函数根据列值子集数据帧
【发布时间】:2016-03-08 17:08:03
【问题描述】:

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

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

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

生成的“测试”为空。我在这里想念什么? 顺便说一句,如果我只是在下面做,那么生成的数据框就可以了。

 myData[myData$YEAR <= 2010,]

【问题讨论】:

    标签: r function subset


    【解决方案1】:

    试试

    SubsetDF <- function(DF, VAR, YEAR){
       DF2 <- DF[DF[VAR] <= YEAR, ]
       return(DF2)
     }
    
    test <- SubsetDF(myData, "YEAR", 2000)
    

    只需将DF$VAR 部分替换为DF[VAR]

    【讨论】:

      【解决方案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)
      

      请注意,年份变量不是作为字符传递的(这就是非标准评估的含义)。有关非标准评估的更多信息,请阅读此http://adv-r.had.co.nz/Computing-on-the-language.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-29
        • 1970-01-01
        • 1970-01-01
        • 2018-06-08
        相关资源
        最近更新 更多