다음과 같은 큰 파일이 있습니다.
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))
}
이것이 내가 할 일입니다.
header_positions <- grepl("^Heading", test)
header_positions
grouping_index <- cumsum(header_positions)
grouping_index
li <- split(test[!header_positions], grouping_index[!header_positions])
li
setNames(li, test[header_positions]) # if you want to have fancy names :)
이 cumsum(grepl(...))
패턴은 이러한 종류의 목록 분할 작업에 매우 유용 하다고 생각합니다 .
을 통해 작성 writeLines()
하려면 다음을 사용하여 목록 요소를 character
벡터 로 변환해야합니다 unlist()
.
for(n in names(li)) {
writeLines(unlist(li[[n]]), paste0(n, ".txt"))
}
이것은 목록의 이름을 반복하는 또 다른 유용한 패턴이므로 이름에 직접 (파일 이름의 경우) 액세스하고이를 사용하여 목록 (파일 내용의 경우)을 색인화 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다