r - 自动按 R 基本顺序选择列()

标签 r automation sqldf

我正在 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 here ,通过写:

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

尽管如此,我很好奇如何用基本 R 来解决它。

最佳答案

我们可以使用do.call

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

-检查OP的输出

identical(mtcars_ordered, mtcars_ordered_auto)
#[1] TRUE

关于r - 自动按 R 基本顺序选择列(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61447765/

相关文章:

r - 为 R 中矩阵的列中的每个值提取列名称

r - R 数据帧的匹配对

javascript - NodeJS Puppeteer setDownloadBehavior 问题

Python Win32Gui 自动化 - 发送 WM_COPYDATA 从 BSPlayer 获取数据

r - 使用 2 个表创建新功能

r - 通过R中的dplyr将特定的列对收集到行中

linux - Rundeck-连接到EC2实例节点

r - sqldf 中的 DATEPART()

r - 将聚合函数转换为用户定义函数

删除特定组合的重复项