假设我要使用多列并使用非标准演变来订购data.frame
。我可能有一个看起来像这样的函数
my_order <- function(data, ...) {
with(data, order(...))
}
使用此函数时出现错误,因为未在with
的上下文中评估我的列。
my_order(mtcars, mpg, cyl)
# Error in order(...) : object 'mpg' not found
注意:我不希望在此问题上使用dplyr::arrange()
,因为它增加了依赖性。
这是使用基数R传递未解析符号的一种方法
my_order <- function(data, ...) {
dots <- substitute(...())
with(data, do.call("order", as.list(dots)))
}
my_order(mtcars, mpg, cyl)
基本上,我们使用替代方法来捕获符号名称,然后使用do.call
将其注入到对order
的调用中>