问题描述
我的示例列表。所以它有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 下有多个表。所以我的目标。
“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
并通过列表和唯一编号命名它们。这就是你的想法吗?