【发布时间】:2020-11-19 11:51:21
【问题描述】:
我有一个看起来像这样的大文件:
Heading1
1 ABC
2 DEF
Heading2
1 GHI
2 JKL
3 MNO
Heading3
1 PQR
2 STU
标题始终具有相同的模式,但每个标题下方的条目不同(条目数量不同,没有共同的模式,字母/单词的数量不同)。
我想将一个列表拆分为多个列表,即每个标题都有一个新列表。如果有人能指出正确的方向来解决这个问题,那就太好了。
干杯!
编辑:忘记包含如何将每个新列表保存为文件名 = 标题的单独文件?
最终解决方案,感谢@Nate
## input
test <- list("Heading1", "1 ABC", "2 DEF", "Heading2", "1 GHI", "2 JKL", "3 MNO", "Heading3", "1 PQR", "2 STU")
## split list into list of lists
header_positions <- grepl("^Heading", test)
grouping_index <- cumsum(header_positions)
li <- split(test[!header_positions], grouping_index[!header_positions])
setNames(li, test[header_positions]) # Yes to fancy names ;)
## save each list
for(n in names(li)) {
writeLines(unlist(li[[n]]), paste0("heading ",n))
}
【问题讨论】:
-
您能否使用 dput()、dump() 或 structure() 提供可重现的数据样本?
-
> dput(test) list("Heading1", "1 ABC", "2 DEF", "Heading2", "1 GHI", "2 JKL", "3 MNO", "Heading3 ", "1 PQR", "2 STU")
-
dput(test) 之后应该有换行符......
-
感谢观看,非常感谢!
-
不是您要求的确切内容,但您可以从“SOfun”查看
read.mtable。你可以做library(SOfun); read.mtable("test.txt", "Heading")。
标签: r list split heading write