r - 如何从 R 导出多个数据框列表
问题描述
我想将我的 3 个列表中的所有数据框导出到单独的'.txt'
文件中。我有一个包含 3 个列表(list1、list2 和 list3)的列表“my_list”。
每个列表包含多个数据框。我想将dataframes
3 个列表的所有内容导出到单独的文件(r1_df1.txt
, r1_df2.txt
, r2_df3.txt
, r2_df4.txt
, r2_df5.txt
, r3_df6.txt
, r3_df7.txt
, r3_df8.txt
)
让我们创建一些数据框:
df1 <- data.frame(geneName = 1:3, EnsemblID = 4:6, position = c(654654654,654654,654654))
df2 <- data.frame(id = 1:3, sex = c("M", "F", "T"))
df3 <- data1 <- data.frame(x1 = 1:3, x2 = letters[1:3])
df4 <- data.frame(y1 = c(3, 2, 1), y2 = c(6, 5, 4))
df5 <- data.frame(geneName = 1:3, EnsemblID = 4:6, position = c(65465,654654,987987))
df6 <- data.frame(id = 1:3, sex = c("C", "S", "T"))
df7 <- data1 <- data.frame(x1 = 1:3, x2 = letters[1:3])
df8 <- data.frame(z1 = c(3, 45, 1), p2 = c(6, 5, 4))
列表中的数据框
list1 <- list(df1, df2); names(list1) <- c("df1", "df2")
list2 <- list(df3,df4,df5); names(list2) <- c("df3", "df4", "df5")
list3 <- list(df6, df7, df8); names(list3) <- c("df6", "df7", "df8")
my_list 包含 3 个列表
my_list <- list(list1, list2, list3); names(my_list) <- c("r1", "r2", "r3")
将数据框导出到单独的.txt
文件**
对于一个列表,我使用此代码
lapply(seq_along(list1),
function(i) write.table(list1[[i]],
paste0("r1_", names(list1)[i] , ".txt"),
row.names = FALSE, quote = FALSE, sep = "\t", dec = ","))
## r1_df1.txt
## r1_df2.txt
我怎样才能一次对所有列表做同样的事情?
我试过for循环
for (i in seq_along(my_list)) {
filename = paste("r_", names(my_list)[i], ".txt")
write.table(my_list[[i]], filename, row.names = FALSE, quote = FALSE, sep = "\t", dec = "," )
}
我得到 3 个文件,每个文件都有绑定数据框,而不是单独的数据框。
解决方案
如果同时迭代名称和数据,这样做会更容易。
试试这个purrr
:
library(purrr)
imap(my_list, function(x, y) imap(x,
~write.table(.x, paste0(y, '_', .y , ".txt"),
row.names = FALSE, quote = FALSE, sep = "\t", dec = ",")))
或者,如果您想将内容保存在基础 R 中:
Map(function(x, y) {
Map(function(p, q) {
write.table(p, paste0(y, '_', q , ".txt"),
row.names = FALSE, quote = FALSE, sep = "\t", dec = ",")
}, x, names(x))
}, my_list, names(my_list))
推荐阅读
- python - 在 Python 中从数据框创建箱线图的问题
- javascript - 如何键入将使用 Typescript 推断参数的函数?
- linux - 为什么交叉编译时不需要指定操作系统版本?
- javascript - 验证 Firebase 实时 URL 是否来自 Firebase 存储
- nginx - K8S Ingress 控制器、证书管理器和 LetsEncrypt SSL 不起作用
- scala - 如何将字符串列表或数组作为列添加到 Spark Dataframe
- python - 如何在 python 中解释 f_regression 输出
- php - php将日期转换为int整数
- c++ - 从类型列表生成纯虚函数和实现
- postgresql - 为什么与 docker 容器内的 adminer 的连接卡在无限加载中?