在R中制作[Q1,Q2,...]形式的矩阵列名称的最佳方法是什么?

时间:2015-06-24 06:39:13

标签: r matrix

我正在将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中通常不鼓励循环。我想知道是否有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用pastepaste进行矢量化。

 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