通过旧列名中的字符串 ID 更改列名

Change column name by string ID in old column name

考虑一下我在 R 中有一个数据框,其名称为:

data:
 A  B  C  D  E  V1 V2 V3 V4 V5 V6 Vx...
 2  3  4  5  6  5  5  5  5  2  2

如何获取所有包含 V 的值并将其替换为 Sample 所以我得到:

数据:

   A  B  C  D  E  Sample1 Sample2 Sample3 Sample4 Sample5 Sample6 Samplex...
   2  3  4  5  6     5       5      5        5       2       2 

我需要一个通用的解决方案,因为在我的数据框中,带有 V 的列的数量以及位置都在变化。非常感谢!

一个简单的解决方案是使用 subregex 来修改列名,这里 ^V 匹配开头的字母 V字符串的一部分,它被替换为 Sample:

names(df) <- sub("^V", "Sample", names(df))
df
#  A B C D E Sample1 Sample2 Sample3 Sample4 Sample5 Sample6
#1 2 3 4 5 6       5       5       5       5       2       2

另一种选择是对 'V' 列名称进行子集化并更新数据集

i1 <- grep("^V", names(df))
names(df)[i1] <- paste0("Sample", seq_along(i1))
df
#  A B C D E Sample1 Sample2 Sample3 Sample4 Sample5 Sample6
#1 2 3 4 5 6       5       5       5       5       2       2

数据

df <- structure(list(A = 2L, B = 3L, C = 4L, D = 5L, E = 6L, V1 = 5L, 
V2 = 5L, V3 = 5L, V4 = 5L, V5 = 2L, V6 = 2L), .Names = c("A", 
 "B", "C", "D", "E", "V1", "V2", "V3", "V4", "V5", "V6"), 
 class = "data.frame", row.names = c(NA, -1L))