【问题标题】:Adding a prefix to certain column names为某些列名添加前缀
【发布时间】:2019-10-16 17:15:30
【问题描述】:

我有一个与这个非常相似的问题:Adding a prefix to column names。 我想为列名添加前缀 - 唯一的区别是,我不想为我拥有的每一列添加前缀。这里是与上述问题相同的最小可重复示例:

m2 <- cbind(1,1:4)
colnames(m2) <- c("x","Y")

导致:

     x Y
[1,] 1 1
[2,] 1 2
[3,] 1 3
[4,] 1 4

为两列添加前缀“Sub”的代码如下所示(根据用户 A5C1D2H2I1M1N2O1R2T1 的建议):

colnames(m2) <- paste("Sub", colnames(m2), sep = "_")

导致:

     Sub_x Sub_Y
[1,]     1     1
[2,]     1     2
[3,]     1     3
[4,]     1     4

如何仅在第一列添加前缀“Sub”?我尝试了以下方法:

colnames(m2[,1]) <- paste("Sub", colnames(m2[,1]), sep = "_")

代码结果:没有警告,没有错误,但也没有前缀。有什么建议么?除了 base r 任何使用 dplyr 的建议也值得赞赏。如果您需要任何进一步的信息,请告诉我。提前致谢。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    试试这个:

    colnames(m2)[1] <- paste0("Sub", "_", colnames(m2)[1])
    # or if you prefer paste
    #colnames(m2)[1] <- paste("Sub", colnames(m2)[1], sep = "_")
    

    【讨论】:

      【解决方案2】:

      使用dplyr,您可以:

      m2 %>%
       as.data.frame() %>%
       rename_at(1, ~ paste("Sub", ., sep = "_"))
      
        Sub_x Y
      1     1 1
      2     1 2
      3     1 3
      4     1 4
      

      【讨论】:

        【解决方案3】:

        paste() 也接受向量,所以你可以这样做:

        colnames(m2) <- paste0(c("Sub_", ""), colnames(m2))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-01
          • 2013-01-30
          • 1970-01-01
          • 2019-11-03
          • 1970-01-01
          • 1970-01-01
          • 2020-01-05
          • 2016-03-07
          相关资源
          最近更新 更多