r - 按R中的数字向量对数据框列进行排序
问题描述
我有一个带有一些变量的数据框,比如说
v1 v2 v3 v4 v5 v6
我有一个数字向量
ord <- c(0, 3, 4, 1, 5, 2)
我想按向量对数据框的列进行排序
var: v1 v2 v3 v4 v5 v6
order: 0 3 4 1 5 2
预期结果:
v1 v4 v6 v2 v3 v5
有任何想法吗?非常感谢你
解决方案
简单的例子。
df <- data.frame(v1=1,v2=1,v3=1,v4=1,v5=1,v6=1)
df
# v1 v2 v3 v4 v5 v6
# 1 1 1 1 1 1 1
如果您以明确的状态提供我们可以使用和复制的数据,这将很有帮助。在未来的问题中,如果您可以为 提供类似此代码的df
内容,它将有很大帮助。当框架已经由其他东西制成时,另一种方法是使用dput(df)
并发布输出。(请注意不要用太多的数据淹没屏幕,您可能需要dput(head(df))
替代或其他方法来减少数据量,同时保持它对您的问题具有代表性。)
structure(list(v1 = 1, v2 = 1, v3 = 1, v4 = 1, v5 = 1, v6 = 1), class = "data.frame", row.names = c(NA,
-1L))
你的问题的答案
ord <- c(0, 3, 4, 1, 5, 2)
df[ order(ord) ]
# v1 v4 v6 v2 v3 v5
# 1 1 1 1 1 1 1
一些类似框架的工具(例如,data.table
)确实更喜欢正确的列第二参数索引,所以这同样有效:
df[ ,order(ord) ]
# v1 v4 v6 v2 v3 v5
# 1 1 1 1 1 1 1
library(data.table)
as.data.table(df)[ , order(ord), with=FALSE ]
# v1 v4 v6 v2 v3 v5
# 1: 1 1 1 1 1 1
library(dplyr)
as.tbl(df)[ , order(ord) ]
# # A tibble: 1 x 6
# v1 v4 v6 v2 v3 v5
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1 1 1 1 1 1
推荐阅读
- javascript - 如何在 jason 中获取所有数组上的特定数据并在 javascript 中使用它
- r - Building my unaltered package suddenly fails: for Vignettes and 'arch = x64'
- python - K fold cross validation---KeyError: '[] not in index'
- python - 如何将字节数组或字节对象拆分为 16 位整数?
- angular - Missing "Access-Control-Allow-Origin" header after a POST request with a 302 response
- python - how to sort a queryset using django and htmx?
- docker - Create Docker image which prevents volume mounting
- javascript - D3 reading promise data into a constructor
- javascript - Promise.resolve 与 Promise.resolve().then()
- mulesoft - 尝试从 IBM 服务连接到 Mule API 时连接超时