Я думаю, у вас есть пара проблем. Во-первых, вам нужно присвоить имена вашим элементам списка, чтобы эти имена могли быть получены вашей функцией.
#your initial approach doesn't name the list elements
df_list <- list(df1, df2)
> names(df_list)
NULL
# so, be explicit
df_list <- list(df1 = df1, df2 = df2)
> names(df_list)
[1] "df1" "df2"
Теперь запустите модифицированную версию вашей функции, которая работает с позицией списка вместо элементов списка. Обратите внимание, что я заменил f
на cyl
, потому что в ваших фреймах данных нет f
.
fun <- function(x) {
df <- mutate(df_list[[x]], newColumn_2 = cyl * 30)
write.csv(df, paste0(names(df_list)[x], ".csv"))
}
Теперь lapply(seq_along(df_list), fun)
должен дать желаемый результат.