在R基本顺序()中自动选择列。

问题描述 投票:0回答:1

我正在用R语言做一个自动化项目,我想按行值对输入数据集(即数据框)进行排序。因为是自动化代码,所以不允许有硬编码的值。 下面是可复制的例子。

data("mtcars")
groupBY <- c('cyl','carb')

通常情况下,我会用这样的方式进行排序:

mtcars_ordered <- mtcars[order(mtcars$cyl,mtcars$carb),]

或者这个

mtcars_ordered <- mtcars[with(mtcars,order(cyl,carb)),]

但我这里是在'自动化世界',没有硬编码的值。因此,我正在寻找这样的东西。

mtcars_ordered_auto <- mtcars[with(mtcars,order(groupBY)),]

order() 接受向量,也就是数据框架的子集,但我找不到只在R基础上做的方法。

PS 最终,我按照建议使用fn$sqldf成功了。此处,通过写。

groupBY_str <- paste(groupBY,collapse=',')
mtcars_ordered_sql <- fn$sqldf('select * from mtcars order by $groupBY_str').

不过,我很好奇如何用R语言解决这个问题。

r automation sqldf
1个回答
2
投票

我们可以使用 do.call

mtcars_ordered_auto <- mtcars[do.call(order, mtcars[groupBY]),]

-检查OP的输出

identical(mtcars_ordered, mtcars_ordered_auto)
#[1] TRUE
© www.soinside.com 2019 - 2024. All rights reserved.