我想交换 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/