R 在select函数中将未加引号的参数作为字符传递
我有一个数据帧:R 在select函数中将未加引号的参数作为字符传递,r,dplyr,R,Dplyr,我有一个数据帧: data <- data.frame( name = c("John", "Paul", "George", "Ringo", "Stuart", "Pete"), instrument1 = c("guitar", "bass", "guitar", "drums", "bass","drums"), instrument2 = c("guitar", "bass", "guitar", "drums", "bass","drums"),stri
data <- data.frame(
name = c("John", "Paul", "George", "Ringo", "Stuart", "Pete"),
instrument1 = c("guitar", "bass", "guitar", "drums", "bass","drums"),
instrument2 = c("guitar", "bass", "guitar", "drums", "bass","drums"),stringsAsFactors=FALSE)
无需引用参数“仪器”。我需要它无引号,因为这是一个更大的功能的一部分。如果我像上面那样跑步,我会得到:
Error in is_string(match) : object 'instrument' not found
您正在寻找
deparse(替代品(x))
magic!它将返回作为字符串传入的参数名称
data我们可以使用rlang::enexpr
将变量
转换为name类,然后使用as将其更改为character。character
作为参数传递给start\u
sel <- function(df, variable) {
var <- as.character(rlang::enexpr(variable))
df2 <- dplyr::select(df, starts_with(var))
return(df2)
}
sel(data, instrument)
# instrument1 instrument2
#1 guitar guitar
#2 bass bass
#3 guitar guitar
#4 drums drums
#5 bass bass
#6 drums drums
sel
Error in is_string(match) : object 'instrument' not found
instrument1 instrument2
1 guitar guitar
2 bass bass
3 guitar guitar
4 drums drums
5 bass bass
6 drums drums
sel <- function(df, variable) {
var <- as.character(rlang::enexpr(variable))
df2 <- dplyr::select(df, starts_with(var))
return(df2)
}
sel(data, instrument)
# instrument1 instrument2
#1 guitar guitar
#2 bass bass
#3 guitar guitar
#4 drums drums
#5 bass bass
#6 drums drums