Мы можем использовать имена индексов или столбцов
names(df1)[1:70] <- v1
, где
v1<- c("AB1", "QB2", ...)
С dplyr
мы можем использовать rename_at
library(dplyr)
library(stringr)
df1 <- df1 %>%
rename_at(1:70, ~ v1)
Если мы переименовываем столбцы, начинающиеся с `AB '
names(df1)
#[1] "x1" "x2" "AB1" "AB2"
df1 %>%
rename_at(vars(matches('^AB\\d+$')), ~ str_replace(., 'AB', 'MZ'))
# x1 x2 MZ1 MZ2
#1 1 6 -0.5458808 0.6048889
#2 2 7 0.5365853 0.3707349
#3 3 8 0.4196231 0.6716903
#4 4 9 -0.5836272 0.6729823
#5 5 10 0.8474600 0.3204306
Или в base R
i1 <- grep("^AB\\d+$", names(df1))
names(df1)[i1] <- sub("AB", "MZ", names(df1)[i1])
Обновляем
df2 <- df2 %>%
rename_at(vars(matches("^AB\\d+$")), ~ str_replace(., "AB", "MZ"))
df2
# MZ1 MZ2 MZ3
#1 12 13 13
#2 12 13 13
#3 12 11 13
#4 12 13 17
#5 12 13 16
data
set.seed(24)
df1 <- data.frame(x1 = 1:5, x2 = 6:10, AB1 = rnorm(5), AB2 = runif(5))
исходные значения данных
df1
# x1 x2 AB1 AB2
#1 1 6 -0.5458808 0.6048889
#2 2 7 0.5365853 0.3707349
#3 3 8 0.4196231 0.6716903
#4 4 9 -0.5836272 0.6729823
#5 5 10 0.8474600 0.3204306
Обновлены данные из сообщения ОП
df2 <- structure(list(AB1 = c(12L, 12L, 12L, 12L, 12L), AB2 = c(13L,
13L, 11L, 13L, 13L), AB3 = c(13L, 13L, 13L, 17L, 16L)),
class = "data.frame", row.names = c(NA, -5L))