我有一个包含这些变量名称的数据框:"X_1","X_106","X_110","X_111","X_112"
以及以字母表中的其他字母开头的其他名称。我有兴趣仅将"_v1"
附加到以"X"
开头的变量,如上所示。我如何在R?
答案 0 :(得分:5)
或只是:
colnames(dat) <- sub("(^X.*)", "\\1_v1", colnames(dat))
例如:
dat <- data.frame(a=1, b=2, c=3,
X_1=4, X_106=5, X_110=6, X_111=7, X_112=8)
dplyr::glimpse(dat)
## Observations: 1
## Variables: 8
## $ a (dbl) 1
## $ b (dbl) 2
## $ c (dbl) 3
## $ X_1 (dbl) 4
## $ X_106 (dbl) 5
## $ X_110 (dbl) 6
## $ X_111 (dbl) 7
## $ X_112 (dbl) 8
colnames(dat) <- sub("(^X.*)", "\\1_v1", colnames(dat))
dplyr::glimpse(dat)
## Observations: 1
## Variables: 8
## $ a (dbl) 1
## $ b (dbl) 2
## $ c (dbl) 3
## $ X_1_v1 (dbl) 4
## $ X_106_v1 (dbl) 5
## $ X_110_v1 (dbl) 6
## $ X_111_v1 (dbl) 7
## $ X_112_v1 (dbl) 8
答案 1 :(得分:2)
names(df2) <- ifelse(grepl("^X",names(df2)), paste0(names(df2),"_v1"), names(df2))
答案 2 :(得分:1)
我相信它会如此简单:
library(stringr)
names(my_data) <- ifelse(str_detect(names(my_data), "^X_"), paste(names(my_data), "v1", sep = "_"), names(my_data))
str_detect(names(my_data), "^X_")
是查找以X _开头的名称。