基本上我的问题是我不明白如何为我自己的函数分配多个变量名称作为“逗号分隔列表”。我的功能如下:
tsf <- function(df, ...){
df<- arrange_(df, .dots = substitute(...))
other stuff
return(df)
}
但如果我将其用作
t <- tsf(df, var1, var2)
数据帧只会在var1的基础上排列,而不是排列在(df,var1,var2)中,它将由两者排列。
我应该如何更正我的代码?
答案 0 :(得分:2)
请参阅the vignette:
library(dplyr)
packageVersion("dplyr")
# [1] ‘0.5.0.9004’
tsf <- function(df, ...){
df<- arrange(df, !!!quos(...))
return(df)
}
tsf(mtcars, vs, cyl)
每个主要动词的下划线版本(filter_(),select_() 等等)。不再需要,因此这些函数已被弃用 (但为了向后兼容而保持不变)。
答案 1 :(得分:2)
您可以使用alist
捕获列表中点参数的值。
tsf <- function(df, ...){
dots <- eval(substitute(alist(...)))
dots <- vapply(dots,
deparse,
character(1))
df <- dplyr::arrange_(df, .dots = dots)
return(df)
}
tsf(mtcars, am, carb, gear)
上的“捕获未评估的...”部分