Если вы хотите использовать итерации и data.frames, вам лучше использовать mapply
для одновременного обхода обоих списков
mapply(function(dname, data)
write.csv(data, file = paste0("C:/home/", dname, ".csv"), row.names = FALSE),
names(df), df)
при итерации списка с помощью lapply()
имя текущего значения недоступно. Альтернативное использование lapply
заключается в повторении имен, а не значений
lapply(names(df), function(dname)
write.csv(df[[dname]], file = paste0("C:/home/", dname, ".csv"), row.names = FALSE))