Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在select函数中将未加引号的参数作为字符传递_R_Dplyr - Fatal编程技术网

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