【发布时间】:2020-01-21 09:35:57
【问题描述】:
我有一个很大的列表,merged_fin,包含 39 个数据帧。数据集如下所示:
> merged_fin[[1]]
sourceid dstid speed
1 177 1 0.010604494
2 46 4 0.010794178
3 100 7 0.007286781
> merged_fin[[2]]
sourceid dstid speed
1 721 12 0.013830787
2 23 15 0.016334978
3 274 16 0.015247266
...
我想将该列表中的每个数据集保存到我的工作目录中自己的.rds 文件中。
- 正在尝试:
for (i in 1:length(merged_fin)){
saveRDS(merged_fin[[i]])}
或者
saveRDS(merged_fin[[1]])
我收到Error in saveRDS(merged_fin[[i]]) : 'file' must be non-empty string。
- 正在尝试:
lapply(names(merged_fin), function(i)
saveRDS(merged_fin[[i]], paste0(i, '.rds')))
我收到list(),但没有文件保存到我的工作目录中。
注意事项:
(1)names(merged_fin)输出NULL; (2) 我最初将 merged_fin 编码为一个空列表 (merged fin <- list()),然后用我从不同文件夹中读取的合并数据集填充它。
- 问题是否在于我引用列表元素的方式?
- 是因为最初定义
merged_fin的方式吗?
感谢您的帮助。
解决方案
就我而言,这只是一个命名列表元素的问题,这是 meenaparam 建议的。我有一个包含正确排序的城市名称的向量,称为cities。我刚刚做了names(merged_fin) <- cities,这足以成功运行
lapply(names(merged_fin), function(i)
saveRDS(merged_fin[[i]], paste0(i, '.rds')))
【问题讨论】: