为什么这不起作用?
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
答案 0 :(得分:6)
提取完成后,索引中的值将被替换而不是名称。例如,替换下面的第一项不会影响元素的名称:
x <- c(a=1, b=2)
x[1] <- 3
x
a b
3 2
在数据框中,您以相同的方式替换了值。值已更改但名称保持不变。要重新排序数据框,请避免使用提取框架。
df <- df[c("z", "y", "x")]
答案 1 :(得分:0)
只是不要把[]放在df之后,它会按照你想要的那样......
df <- data.frame(x=1:2, y = 3:4, z = 5:6)
df <- df[c("z", "y", "x")]
df
# z y x
#1 5 3 1
#2 6 4 2
如果你质疑为什么,Pierre Lafortune的评论是正确的。
作为附注,我还想将commat添加到单独的维度:
df <- df[,c("z", "y", "x")]
我发现它更合适。