代码之家  ›  专栏  ›  技术社区  ›  Ankit

r按名称选择数据帧的列

  •  1
  • Ankit  · 技术社区  · 7 年前

    我知道使用 data$column . 我的问题是,有没有一种方法可以动态地做到这一点,即创建一个函数并传递数据, columnName 作为参数返回结果

    fnGetColumnData (data, columnName) {
       data$columnName
    }
    

    在函数中封装代码时,上述方法不起作用。但是如果我写 data$"columnName" 然后它工作。有没有办法把这个包起来?

    2 回复  |  直到 7 年前
        1
  •  2
  •   NelsonGon phoxis    7 年前

    试试这个:

    select_col<-function(df,colname){
     colname<-deparse(substitute(colname))
      df[colname]
    }
    select_col(iris,Species)
    
        2
  •  1
  •   acylam    7 年前

    dplyr rlang :

    library(dplyr)
    library(rlang)
    
    fnGetColumnData = function(data, columnName){
      colname_quo = enquo(columnName)
      pull(data, !!colname_quo)
    }
    

    输出:

    > fnGetColumnData(mtcars, "cyl")
     [1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4
    
    > fnGetColumnData(mtcars, cyl)
     [1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4