如何根据列表名称创建文件夹并将列表保存到相应的文件夹中?

问题描述

我的示例列表。所以它有3张桌子。所以现在当我将此列表保存到文件中时,我可以保存到单个列表中。在我的列表中,这个 ID 是“screen = Screen() scr_img = screen.capture(screen.getBounds()) scr_img.save("C:\Screenshots","screenshot") ”,例如是唯一的。文件被保存为 PMC7837979.Table1.txt 、 PMC7837979.Table2.txt 等等。所以现在所有的东西都杂乱无章。

所以现在我的列表包含 6 个唯一 ID 作为一个小子集示例。每个 ID 下有多个表。所以我的目标。

  • 为每个唯一的 ID 生成一个文件夹并将相应的 ID 保存在其中,例如如果“PMC7837979”有 3 个表,那么所有文件都应该在 PMC7837979 命名文件夹中?

“PMC7837979”“PMC7809753”“PMC7790830”“PMC7797573”“PMC7806552”“PMC7836575”

PMC7837979

解决方法

以下是初步的基本 R 解决方案,因为我无法让您提供的数据起作用。您能否缩短数据以使其更容易插入 R 中?

假设我们有以下模拟您的示例的玩具数据。

数据

df <- data.frame(var1 = c(1,2),var2 = c(2,3)) 
IDS <- list(A = list(df,df),B = list(df,df))
IDS 
> IDS
$A
$A[[1]]
  var1 var2
1    1    2
2    2    3

$A[[2]]
  var1 var2
1    1    2
2    2    3


$B
$B[[1]]
  var1 var2
1    1    2
2    2    3

$B[[2]]
  var1 var2
1    1    2
2    2    3

然后你可以使用 *apply 系列如下。

代码

lapply(names(IDS),function(x) {dir.create(x); 
                    sapply(1:length(IDS[[x]]),function(y) {
                      write.table(IDS[[x]][y],file = paste(x,"/",paste(x,y,sep = "_"),".txt",sep = ""))
                    })
})

该代码为列表中的每个列表创建一个文件夹,名称为 dir.create(),名称基于整个列表对象的 names()。然后它解压缩它在相应文件夹中的每个列表中找到的所有 data.frame 并通过列表和唯一编号命名它们。这就是你的想法吗?