将列表中的每个数据帧保存为CSV,并使文件名与df名称-R相同;拉普拉

将列表中的每个数据帧保存为CSV,并使文件名与df名称-R相同;拉普拉,r,csv,dataframe,lapply,R,Csv,Dataframe,Lapply,我有一个数据帧列表。我希望将每个数据帧保存为单独的CSV文件,并使文件名与数据帧的名称相同 df <- list(mtcars, iris, ToothGrowth) df <- setNames(df, c("mtcars", "iris", "ToothGrowth")) lapply(df, function(a) write.csv(a, file = paste0("C:/home/", unlist(lapply(names(df)), function (b) b))

我有一个数据帧列表。我希望将每个数据帧保存为单独的CSV文件,并使文件名与数据帧的名称相同

df <- list(mtcars, iris, ToothGrowth) df <- setNames(df, c("mtcars",
"iris", "ToothGrowth"))

lapply(df, function(a) write.csv(a, file = paste0("C:/home/",
unlist(lapply(names(df)), function (b) b)), ".csv"), row.names = FALSE))

df如果您想同时迭代name和data.frames,最好使用
mapply
同时遍历这两个列表

mapply(function(dname, data) 
   write.csv(data, file = paste0("C:/home/", dname, ".csv"), row.names = FALSE), 
   names(df), df)
通过
lappy()
迭代列表时,当前值名称不可用。使用
lappy
的替代方法是迭代名称,而不是值

lapply(names(df), function(dname) 
   write.csv(df[[dname]], file = paste0("C:/home/", dname, ".csv"), row.names = FALSE))

如果要同时迭代name和data.frames,最好使用
mapply
同时遍历这两个列表

mapply(function(dname, data) 
   write.csv(data, file = paste0("C:/home/", dname, ".csv"), row.names = FALSE), 
   names(df), df)
通过
lappy()
迭代列表时,当前值名称不可用。使用
lappy
的替代方法是迭代名称,而不是值

lapply(names(df), function(dname) 
   write.csv(df[[dname]], file = paste0("C:/home/", dname, ".csv"), row.names = FALSE))

purrr
具有以
i
开头的函数,可以简化索引映射。由于您不需要返回任何内容,
iwalk
将很好地工作。给定一个命名的列表,
iwalk
然后应用一个以列表项和列表项名称为参数的函数,因此不需要任何额外的步骤来提取名称,就像使用基本
apply
函数一样。我的文件路径之所以不同,只是因为我在Mac电脑上——请忽略这一点


df
purr
具有以
i
开头的函数,使索引映射变得容易。由于您不需要返回任何内容,
iwalk
将很好地工作。给定一个命名的列表,
iwalk
然后应用一个以列表项和列表项名称为参数的函数,因此不需要任何额外的步骤来提取名称,就像使用基本
apply
函数一样。我的文件路径之所以不同,只是因为我在Mac电脑上——请忽略这一点


df如果存在额外级别的嵌套列表,是否有方法更改此代码?ie:现在
df
包含在
主列表中
?或者我需要一个lappy/mappy组合吗?我已经把它作为一个新问题发布了,以防你有时间/兴趣去解决:如果有额外级别的嵌套列表,有没有办法修改这个代码?ie:现在
df
包含在
主列表中
?或者我需要一个lappy/mappy组合吗?我已经把它作为一个新问题发布了,以防你有时间/兴趣去解决:我如何修改它以获得一个更嵌套的列表?例如,
df
及其元素现在包含在一个新的列表中,
masterlist
?这似乎是一个不同的问题。你可能会找到一个处理这种情况的帖子,或者贴一个新的OneHanks!我不确定是否要发布一个新问题,但我会采纳您的建议:)如果您对解决方案感兴趣:我将如何修改它以获得更嵌套的列表?例如,
df
及其元素现在包含在一个新的列表中,
masterlist
?这似乎是一个不同的问题。你可能会找到一个处理这种情况的帖子,或者贴一个新的OneHanks!我不确定是否要发布一个新问题,但我会采纳你的建议:)以防你对解决方案感兴趣: