为什么`[<-`不能重新排序数据框列?

t.k*_*ski 7 r

为什么这不起作用?

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
Run Code Online (Sandbox Code Playgroud)

请注意,名称是原始顺序,但数据本身已更改顺序.

这很好用

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
Run Code Online (Sandbox Code Playgroud)

Pie*_*une 6

提取完成后,索引中的值将替换为名称.例如,替换下面的第一项不会影响元素的名称:

x <- c(a=1, b=2)
x[1] <- 3
x
a b 
3 2 
Run Code Online (Sandbox Code Playgroud)

在数据框中,您以相同的方式替换了值.值已更改但名称保持不变.要重新排序数据框,请避免使用提取框架.

df <- df[c("z", "y", "x")]
Run Code Online (Sandbox Code Playgroud)