我有一个简单的功能,可以从数据框中选择一列。 参数“ 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")```
结果:
var1
1好
2好
select_one_column(df22,'var1')
结果:
my_column
1个坏
2不好
如何使“ dplyr select”使用字符参数的值而不是名称作为文字?
答案 0 :(得分:0)
如果我们使用select
,则一个选项是评估(!!
)
select_one_column <- function(df, my_column) {
select(df, !!my_column)
}
select_one_column(df11,"var1")
# var1
#1 good
#2 good
select_one_column(df22,'var1')
# var1
#1 good
#2 good
答案 1 :(得分:0)
您的解决方案已经可以使用,您只需要确保函数中使用的变量不能是任何数据框的列名即可。
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<-function(df,y) select(df,{{y}})
适用于带引号的列名
select_one_column(df11,"var1")
以及未引用的。
select_one_column(df22,var1)