为某些列名添加前缀

时间:2019-10-16 09:05:02

标签: r dplyr

我有一个与此问题非常相似的问题: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”的代码如下所示(如用户A5C1D2H2I1M1N1O2R1T1T1所建议):

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 = "_")

代码结果:无警告,没有错误,但也没有前缀。有什么建议么?除了基础之外,任何使用dplyr的建议也将受到赞赏。如果您需要任何进一步的信息,请告诉我。预先感谢。

3 个答案:

答案 0 :(得分:1)

尝试一下:

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

答案 1 :(得分:1)

使用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

答案 2 :(得分:0)

另外paste()接受向量,因此您可以这样做:

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