我的问题是如何根据字符向量重命名列名,同时将向量的顺序强加到我的数据框上。我已经阅读了所有类似的帖子,但没有回答我的问题。
我正在研究这样的数据框:
df<- data.frame(q3= c(1,4,6,1), q12=c(5,3,2,4), q11=c(1,2,3,4), q1=c(5,6,4,5),q5= c(1,4,6,1), q9=c(5,3,2,4), q10=c(1,2,3,4), q4=c(5,6,4,5),q2= c(1,4,6,1), q7=c(5,3,2,4), q6=c(1,2,3,4), q8=c(5,6,4,5))
理想情况下,我想根据它们的索引(即 q1、q3、q78、q99)对这些列进行排序。然而,这似乎很难。
幸运的是,我还有一个包含有序列名的向量:
cols<- c("q1", "q2", "q3", "q4","q5", "q6", "q7", "q8","q9", "q10", "q11", "q12")
将数据框列名称替换cols
为显然是不正确的,因为它们的顺序不同。所以我到目前为止达到的地方是:
colnames(df) <- match(colnames(df), cols)
df <- df[,order(names(df))]
它将 替换为colnames(df)
后者在 cols 中的位置,但显然我无法对这些数字进行排序,因为 R 不会将它们视为整数(由于 R 不允许数字作为变量的名称)。如果我可以这样做,那么 df 将与 cols 的顺序相同,我只需替换列名。
我怎样才能使这项工作?如果不可能,还有什么可以替代的?
提前致谢。