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

标签 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

请注意,名称按原始顺序排列,但数据本身的顺序已更改。

这很好用

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/

相关文章:

python - 在没有鼠标的情况下在 Jupyter 中选择多光标

r - 根据行和列指定添加矩阵

r - 将 glm 的预测线添加到 ggplot2,大于原始数据集

r - 数据框中列中的值的平均值?

r - ggplot 图例 : geom_abline interference

r - 如何通过变量将列名传递给 data.table 中的函数?

r - model.frame.default : variable lengths differ 中的错误

R时间戳差异打印

r - R : loading a table with number as the column heading all were wrongly added a X, how to solve it?

r - 更改 R 中 levelplot 的宽度