R按名称选择数据框的列

时间:2019-01-28 19:49:29

标签: r dataframe

我知道使用data$column选择一列数据帧。我的问题-在创建函数并传递数据(columnName作为参数并返回结果的方式)中,有没有一种动态地做到这一点的方法?

fnGetColumnData (data, columnName) {
   data$columnName
}
将代码封装在函数中时,上述

不起作用。但是,如果我写data$"columnName",它就可以工作。有没有办法封装这个?

2 个答案:

答案 0 :(得分:2)

尝试一下:

select_col<-function(df,colname){
 colname<-deparse(substitute(colname))
  df[colname]
}
select_col(iris,Species)

答案 1 :(得分:1)

使用dplyrrlang

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