首页 > 解决方案 > R - 将每个数据帧保存在数据帧列表中

问题描述

我有这个数据框列表:

set.seed(1)
S1 = data.frame(replicate(2,sample(0:130,30,rep=TRUE)))
S2 = data.frame(replicate(2,sample(0:130,34,rep=TRUE)))
S3 = data.frame(replicate(2,sample(0:130,21,rep=TRUE)))
S4 = data.frame(replicate(2,sample(0:130,26,rep=TRUE)))
df_list1 = list(S1 = S1, S2 = S2, S3 = S3, S4 = S4)

set.seed(2)
S1 = data.frame(replicate(2,sample(0:130,30,rep=TRUE)))
S2 = data.frame(replicate(2,sample(0:130,34,rep=TRUE)))
S3 = data.frame(replicate(2,sample(0:130,21,rep=TRUE)))
S4 = data.frame(replicate(2,sample(0:130,26,rep=TRUE)))
df_list2 = list(S1 = S1, S2 = S2, S3 = S3, S4 = S4)

set.seed(3)
S1 = data.frame(replicate(2,sample(0:130,30,rep=TRUE)))
S2 = data.frame(replicate(2,sample(0:130,34,rep=TRUE)))
S3 = data.frame(replicate(2,sample(0:130,21,rep=TRUE)))
S4 = data.frame(replicate(2,sample(0:130,26,rep=TRUE)))
df_list3 = list(S1 = S1, S2 = S2, S3 = S3, S4 = S4)

set.seed(4)
S1 = data.frame(replicate(2,sample(0:130,30,rep=TRUE)))
S2 = data.frame(replicate(2,sample(0:130,34,rep=TRUE)))
S3 = data.frame(replicate(2,sample(0:130,21,rep=TRUE)))
S4 = data.frame(replicate(2,sample(0:130,26,rep=TRUE)))
df_list4 = list(S1 = S1, S2 = S2, S3 = S3, S4 = S4)

df_list = list (df_list1, df_list2, df_list3, df_list4)
names(df_list) = c("AB_df", "BC_df", "DE_df", "FG_df")

我想保存此列表中的每个数据帧(通过 write.table)。我开始列出每个 df-name 的列表:

level1 = paste("df_list", names(df_list), sep = "$")
samples = names(df_list[[1]])
df_names = paste(rep(level1, each = length(samples)), samples, sep = "$")

我现在的想法是遍历这个列表并使用 write.table 保存数据框并自动分配一个名称。

但我的问题是这df_names[i]是一个字符,我不能将它用作 df-path。任何想法?

标签: rlistloopsdataframe

解决方案


您可以编写一个嵌套的 for 循环,如下所示:

for(i in 1:length(df_list)){
  for(idx in 1:length(df_list[[i]])){
    write.table(df_list[[i]][[idx]],paste0("your_location",names(df_list[i]),"_",names(df_list[[i]][idx]),".csv"))
  }
}

让我知道它是否有效。


推荐阅读