为什么这不起作用?
df <- data.frame(x=1:2, y = 3:4, z = 5:6)
df[] <- df[c("z", "y", "x")]
df
#> x y z
#> 1 5 3 1
#> 2 6 4 2
请注意,名称按原始顺序排列,但数据本身的顺序已更改。
这很好用
df <- data.frame(x=1:2, y = 3:4, z = 5:6)
df[c("z", "y", "x")]
#> z y x
#> 1 5 3 1
#> 2 6 4 2
最佳答案
提取完成后,索引中的值将被替换,而不是名称。例如,替换下面的第一项不会影响元素的名称:
x <- c(a=1, b=2)
x[1] <- 3
x
a b
3 2
在数据框中,您以相同的方式替换了值。值发生了变化,但名称保持不变。要对数据框重新排序,请避免使用提取框架。
df <- df[c("z", "y", "x")]
关于r - 为什么 `[<-` 不能对数据框列进行重新排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39643386/