如何制作;dplyr选择";要使用character参数的值而不是其名称作为文本吗?

如何制作;dplyr选择";要使用character参数的值而不是其名称作为文本吗?,r,dplyr,R,Dplyr,我有一个从数据框中选择一列的简单函数。 参数“my_column”是要选择的列的名称。 当datafame包含名为“my_column”的列时,该函数工作不正常。以下是一个例子: library(dplyr) select_one_column<-function(df,my_column) { select(df,my_column) } df11 <- data.frame( var1 = c( 'good', 'good'), var2 = c( 'good2', '

我有一个从数据框中选择一列的简单函数。 参数“my_column”是要选择的列的名称。 当datafame包含名为“my_column”的列时,该函数工作不正常。以下是一个例子:

library(dplyr)
select_one_column<-function(df,my_column) { select(df,my_column) }

df11 <- data.frame(
  var1 = c( 'good', 'good'),
  var2 = c( 'good2', 'good2') )

df22 <- data.frame(
  var1 = c( 'good', 'good'),
  var2 = c( 'good2', 'good2'),
  my_column=c('bad','bad') )

select_one_column(df11,"var1")```
结果:

我的专栏

1坏

2糟糕


如何使“dplyr select”使用字符参数的值而不是其名称作为文字?

如果我们使用
选择
,一个选项是evaluate(
!!


select\u one\u column您的解决方案已经运行,您只需确保您在函数中使用的变量不能是任何数据帧的列名

library(dplyr)

select_one_column<-function(df,string_which_cannot_be_column_name) {
     select(df,string_which_cannot_be_column_name) 
} 

select_one_column(df11,"var1")
#  var1
#1 good
#2 good

select_one_column(df22,"var1")
#  var1
#1 good
#2 good
它使用带引号的列名

select_one_column(df11,"var1")
还有一些没有报价的

select_one_column(df22,var1)

使用
select_at
而不是
select
进行字符输入
select_one_column<-function(df,y)  select(df,{{y}}) 
select_one_column(df11,"var1")
select_one_column(df22,var1)