【发布时间】:2016-08-10 16:07:23
【问题描述】:
当我尝试使用"[" 对列进行部分重新排序时,值会被交换,但列的名称不会移动。请参见下面的示例:
x = data.frame(x1 = c(1,2,3), x2 = c(2,3,4), x3 = c("e","e","e"), x4 = c("f","f","f"))
x
#x1 x2 x3 x4
#1 2 e f
#2 3 e f
#3 4 e f
x[, c(3,4)] = x[, c(4,3)]
#x1 x2 x3 x4
#1 2 f e
#2 3 f e
#3 4 f e
关于为什么列的名称没有移动以及如何简单地解决这个问题的任何想法?
【问题讨论】:
-
切换名称可能更合理。
names(x)[c(3,4)] <- names(x)[c(4,3)] -
@DavidArenburg 我不认为这是链接的欺骗
-
@DavidArenburg 这根本不是重复的。与列交换相关的所有问题都不相同。
-
@YohanObadia 如果您想知道“为什么” - 很简单。您将 值 从
x[, c(4,3)]分配到x[, c(3,4)]列。这就是它的工作原理。[]保留了x的原始结构。这与您对x[] <- lapply(x, type.convert)的操作相同。尽管lapply返回一个列表而不是data.frame,但x仍然是data.frame。除此之外,该骗局中的所有答案都与您的问题相关