这是关于这个问题的参考。
我想重命名大型数据框中的一部分列。 我希望下面的代码将把列
然而,
尽管
展示了顺序并未被保留。该帖子建议使用
任何帮助都将不胜感激!
接受的答案 这个答案解决了我的重命名问题。 这个答案解释了奇怪的行为是由于循环使用造成的。
我想重命名大型数据框中的一部分列。 我希望下面的代码将把列
X4
,X5
,X6
和X7
重命名为gradek
,grade1
,grade2
和grade3
:set.seed(1)
in.df <- data.frame( matrix( rnorm(60), ncol=10) )
names(in.df) <- ifelse( names(in.df) %in% c('X4', 'X5', 'X6', 'X7'),
paste('grade', c('k',1:3), sep=''),
names(in.df) )
然而,
> names(in.df)
[1] "X1" "X2" "X3" "grade3" "gradek" "grade1" "grade2" "X8"
[9] "X9" "X10"
尽管
> paste('grade', c('k',1:3), sep='')
[1] "gradek" "grade1" "grade2" "grade3"
展示了顺序并未被保留。该帖子建议使用
match
代替%in%
,但在这种情况下并不起作用。(也许在R的其他版本中是正确的。在我安装的版本(2.15.3)中,match
的帮助页面表明%in%
是通过match
定义的,所以改变它是没有帮助的。)任何帮助都将不胜感激!
接受的答案 这个答案解决了我的重命名问题。 这个答案解释了奇怪的行为是由于循环使用造成的。
names(in.df)[names(in.df) %in% c("X4", "X5", "X6", "X7")] <- paste('grade', c('k',1:3), sep='')
? - A5C1D2H2I1M1N2O1R2T1names(in.df[,c("X4", "X5", "X6", "X7")]) <- paste('grade', c('k',1:3), sep='')
,但不行。我没有想到需要对names
的调用进行子集化,而不是数据框本身。 - Nathan VanHoudnos