r - 无需完全重新分配即可更改数据框中的列位置

标签 r

我想交换 data.frame 中的两列。我知道我可以这样做:

dd <- dd[c(1:4, 6:5, 7:10)]

但我发现它不优雅,可能很慢(?)并且对程序不友好(您需要知道 length(dd) ,甚至在某些情况下交换的列是否接近该值...)
有没有一种简单的方法可以在不重新分配整个数据框的情况下做到这一点?
dd[2:3] <- dd[3:2]

结果是非常“有损”,因为 [ <-只关注值,而不关注属性。所以例如:
(dd <- data.frame( A = 1:4, Does = 'really', SO = 'rock' ) )
dd[3:2] 
dd[2:3] <- dd[2:1]
print(dd)

列名显然没有翻转......

任何的想法?我也可以在我很长的列表中添加一个小的自定义函数,但是 grrr... 应该是一种方法。 ;-)

最佳答案

它不是一个单一的函数,而是相对简单的:

dd[replace(seq(dd), 2:3, 3:2)]

  A   SO   Does
1 1 rock really
2 2 rock really
3 3 rock really
4 4 rock really

关于r - 无需完全重新分配即可更改数据框中的列位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18138519/

相关文章:

r - 如何使用多项 logit 模型的标准误差获得平均边际效应 (AME)?

将 dateRangeInput 恢复为空

r - 大型数据集中的快速子集/查找/过滤器

c - R 外部接口(interface)

r - 如何将 ddply 与不同的 .variables 一起使用?

r - 来自 url 模板的传单 map 图 block 未在 Shiny 应用程序中呈现

r - 排列矩阵 - 网络图

python - 如何将权重输入 igraph 社区检测 [Python/C/R]

r - 组合(rbind)数据框并创建带有原始数据框名称的列

r - 使用gsub替换字符串及其后面的n个单词