这是我的数据.

dt<-as.data.table(matrix(data = sample(c(paste0(sample(letters, 9), 1:120), round(runif(5) * 100)), 120, replace = TRUE),nrow = 20,ncol = 6,byrow = FALSE))

所有或部分列要么是数字、字母,要么是两者的混合. 我需要排序的数据基于哪些列的输入,即是否只有1列或2列在一起或更多.

让我们假设这是当前的用户输入

fromexcel<-c("V1", "V2", "V3")
  1. 但代码需要是动态的,并在被要求时考虑更多的列.
  2. 用户要求的列不需要排序,但也可以以这种方式排序为c("V5", "V1").

我总是使用gtools::mixedsort(),但任何其他有效的都是受欢迎的.

如果你觉得这篇文章很有用,你可以参考这篇文章. sorting a very large dataset in R

谢谢.

推荐答案

其中一个选项是:

dt[do.call(order, mget(fromexcel))]

但正如r2evans在 comments 中解释的那样,canonicaldata.table的方式将是(这将对表进行适当的排序).

setorderv(dt, fromexcel)

R相关问答推荐

如何计算新变量中的通货inflating 率?

在图内移动y轴上的标签

如何使用ggplot重新绘制LASO回归图?

如果窗口在CLARME或集团之外,则有条件领先/滞后滚动总和返回NA

使用spatVector裁剪网格数据时出现的问题

在另一个函数中调用ggplot2美学

使用sf或terra的LINESTRAING的累积长度

R函数‘paste`正在颠倒其参数的顺序

如何调整曲线图中的y轴标签?

根据文本字符串中的值粘贴新列

合并DFS列表并将索引提取为新列

R Read.table函数无法对制表符分隔的数据正常工作

为什么这个表格格罗布不打印?

如何在R中使用混合GAM模型只对固定的影响因素进行适当的预测?

在R中的数据框上使用Apply()函数时,如何保留非数字列?

层次树图的数据树

创建新列,其中S列的值取决于该行S值是否与其他行冗余

对R中的列表列执行ROW Mean操作

R中的Desolve:返回的导数数错误

如何用不同长度的向量填充列表?