【问题标题】:What's the best way to make matrix column names of the form [Q1, Q2, ...] in R? [duplicate]在R中制作[Q1,Q2,...]形式的矩阵列名的最佳方法是什么? [复制]
【发布时间】:2015-09-10 05:31:43
【问题描述】:

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

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    您可以尝试使用pastepaste 是矢量化的。

     colnames(mymatrix) <- paste0('Q', 1:108)
    

    如果您还不知道矩阵中的列数(如 cmets 中提到的@thelatemail),一般方法是

     colnames(mymatrix) <- paste0("Q",seq_len(ncol(mymatrix)))
    

    您还可以使用regex 更改列名。假设您的“mymatrix”中的列名是

     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
    

    【讨论】:

    • paste0("Q",seq_len(ncol(mymatrix))) 使其自动化。,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    相关资源
    最近更新 更多