R 创建一个函数,该函数创建向量时不需要字符串的引号

R 创建一个函数,该函数创建向量时不需要字符串的引号,r,function,vector,R,Function,Vector,我知道dplyr select能够使用不带引号的列名对数据集进行子集划分: function (.data, ...) { UseMethod("select") } 我想做一些类似的事情,但是我希望函数创建一个向量,而不是子集。比如: var_select <- function (...) { UseMethod("select") } vector <-var_select(cyl, disp, hp) > vector [1] "cyl" "di

我知道dplyr select能够使用不带引号的列名对数据集进行子集划分:

function (.data, ...) 
{
    UseMethod("select")
}
我想做一些类似的事情,但是我希望函数创建一个向量,而不是子集。比如:

var_select <- function (...) {
    UseMethod("select")
}
vector  <-var_select(cyl, disp, hp)
> vector
[1] "cyl"  "disp" "hp"

正确的语法是什么?

可能是这样的:

foo <- function(...){
  as.character(as.list(match.call()[-1L]))
}

> foo(a,b,c)
[1] "a" "b" "c"
deparse可能比as.character更安全,也许使用。。。我们得到的不是电话本身,而是:

v <- function(...){
  sapply(eval(substitute(alist(...))), deparse)
}
v(a,b,list(1))
#> [1] "a"       "b"       "list(1)"
v <- function(...){
  sapply(eval(substitute(alist(...))), deparse)
}
v(a,b,list(1))
#> [1] "a"       "b"       "list(1)"