Вы можете использовать map
и set_names
из purrr
здесь.
set.seed(1)
sampledata<- data.frame(ID = sample(1:2), name = sample(letters, 2, replace = TRUE))
colnames(sampledata)[1] <- "Pseudo ID"
datalist <- list(sampledata, sampledata)
library(purrr)
map(datalist, ~ set_names(.x, nm = replace(
names(.x), names(.x) == "Pseudo ID", "PatientID"
)))
#[[1]]
# PatientID name
#1 1 o
#2 2 x
#[[2]]
# PatientID name
#1 1 o
#2 2 x
Если вы хотите назначить разные имена, используйте map2
new_id_names <- c("PatientID_1", "PatientID_2")
map2(.x = datalist, .y = new_id_names, ~ set_names(.x, nm = replace(
names(.x), names(.x) == "Pseudo ID", .y
)))