Я хочу изменить имена столбцов в нескольких dfs в al oop, где новые имена столбцов зависят от имени df:
library(dplyr)
# A simple example of my data:
dataframe_AA <- data.frame(
var1 = sample(1:3),
var2 = sample(1:3),
var3 = sample(1:3))
dataframe_AB <- data.frame(
var1 = sample(1:3),
var2 = sample(1:3),
var3 = sample(1:3))
dfs <- list(dataframe_AA, dataframe_AB)
combinations <- c("AA", "AB")
oldnames = c("var1", "var2", "var3")
for (df in seq_along(dfs)) {
for (combi in combinations) {
newnames = paste(oldnames, substr = substring(combi,1,2), sep = "_")
df <- df %>% rename_at(vars(oldnames), ~newnames)
}
}
#Expected outcome:
names(dataframe_AA)
[1] "var1_AA" "var2_AA" "var3_AA"
names(dataframe_AB)
[1] "var1_AB" "var2_AB" "var3_AB"
newnames
успешно создан внутри l oop, но затем я получаю сообщение об ошибке: Error in UseMethod("tbl_vars") :
no applicable method for 'tbl_vars' applied to an object of class "c('integer', 'numeric')"
Делать все, что за пределами al oop работает, однако:
df = dataframe_AA
combi = "AA"
newnames = paste(oldnames, substr = substring(combi,1,2), sep = "_")
df <- df %>% rename_at(vars(oldnames), ~newnames)
print(names(df))
[1] "var1_AA" "var2_AA" "var3_AA"
Я не понимаю, что я делаю что-то не так и как я могу заставить это работать в al oop.