如何从 R 中的 headers 列中删除某些字符?

How can I remove certain characters from column headers in R?

我有以下数据框:

Gene <- c(1,2,3,4,5,6)
A1.1 <- c(1,1,2,4,3,5)
B1.1 <- c(2,1,4,2,4,5)
C1.1 <- c(2,4,3,2,1,5)
A1.2 <- c(1,1,2,3,4,5)
B1.2 <- c(2,2,3,4,5,1)
C1.2 <- c(3,3,2,1,4,5)

df <- data.frame(Gene, A1.1, B1.1, C1.1, A1.2, B1.2, C1.2)
df

  Gene A1.1 B1.1 C1.1 A1.2 B1.2 C1.2
1    1    1    2    2    1    2    3
2    2    1    1    4    1    2    3
3    3    2    4    3    2    3    2
4    4    4    2    2    3    4    1
5    5    3    4    1    4    5    4
6    6    5    5    5    5    1    5

如何从每列 header 中删除“.1”和“.2”(或第 3 个和第 4 个字符)? (例如,A1.1 -> A1 或 A1.2 -> A1)。我可以使用 gsub() 吗?

我们可以使用 sub 来匹配 . (元字符 - 所以转义)后跟一个或多个数字 (\d+) 最后 ($)的字符串并替换为空白 ("")

names(df) <- sub("\.\d+$", "", names(df))

注意:如果数据是data.frame,则不允许重复列名,也不推荐