我正在将Excel文件读入R中,如下所示:
Table <- read_excel("mydatafile.xlsx", 1, col_names=FALSE)
然后,我将其转换为矩阵:
mymatrix <- as.matrix(Table)
列自动显示为X0,X1,X2等,直至X107。因为列表示测试的答案,我想在R中创建一些新的列名。我希望将列命名为Q1,Q2,Q3,Q4,依此类推,直到Q108。
我需要创建一个列名称向量,以便我可以去
colnames(mymatrix) <- my_col_names
但是,我不确定如何做到最好。我意识到我可以通过循环很容易地得到我想要的东西,但我知道在R中通常不鼓励循环。我想知道是否有更好的方法来做到这一点。
答案 0 :(得分:2)
您可以尝试使用paste
并paste
进行矢量化。
colnames(mymatrix) <- paste0('Q', 1:108)
如果你还不知道矩阵中的列数,(如评论中提到的@thelatemail),一般的方法是
colnames(mymatrix) <- paste0("Q",seq_len(ncol(mymatrix)))
您还可以使用regex
更改列名称。假设您的&#39; mymatrix&#39;中的列名称是
nm1 <- paste0('X',0:107)
我们可以使用gsubfn
更改名称
library(gsubfn)
nm2 <- gsubfn('[^0-9]+([0-9]+)$', ~sprintf('Q%d',as.numeric(x)+1), nm1)
head(nm2)
#[1] "Q1" "Q2" "Q3" "Q4" "Q5" "Q6"
colnames(mymatrix) <- nm2