R의 목록 목록에 목록 추가
이미 목록 형식으로 된 목록에 데이터를 추가하는 데 문제가 있습니다. 시뮬레이션 루프 중에 결과 개체를 내보내는 프로그램이 있습니다. 데이터 자체는 행렬 목록으로 저장됩니다. 내 생각은 목록에 목록을 저장 한 다음 나중에 분석하기 위해이 목록 목록을 R 개체로 저장하는 것이지만이를 올바르게 달성하는 데 몇 가지 문제가 있습니다. 시뮬레이션의 행렬 데이터 대신 값을 사용하여 작은 추상 예제로 수행 한 작업을 보여 드리겠습니다.
시뮬레이션 루프를 3 번 실행했다고 가정 해 보겠습니다. 반복하는 동안 결과 목록은 R 객체로 저장할 하나의 목록 목록으로 수집되어야합니다.
다른 목록을 포함하고 저장할 목록 : outlist1 <- list()
첫 번째 반복 : resultsa <- list(1,2,3,4,5)
outlist <- append(outlist1,resultsa)
두 번째 반복 : resultsb <- list(6,7,8,9,10)
outlist <- append(outlist1,b)
세 번째 반복 : resultsc <- list(11,12,13,14,15)
outlist <- list(outlist2,c)
그러나이 솔루션은 이러한 방식으로 목록을 포함하는 목록을 늘리는 데 작동하지 않습니다. 원하는 결과는 다음과 같습니다.
>outlist
[[1]]
[[1]][[1]]
[1] 1
[[1]][[2]]
[1] 2
[[1]][[3]]
[1] 3
[[1]][[4]]
[1] 4
[[1]][[5]]
[1] 5
[[2]]
[[2]][[1]]
[1] 6
[[2]][[2]]
[1] 7
[[2]][[3]]
[1] 8
[[2]][[4]]
[1] 9
[[2]][[5]]
[1] 10
[[3]]
[[3]][[1]]
[1] 11
[[3]][[2]]
[1] 12
[[3]][[3]]
[1] 13
[[3]][[4]]
[1] 14
[[3]][[5]]
[1] 15
그러나 대신 내가 얻는 것은 다음과 같습니다.
> outlist3
[[1]]
[[1]][[1]]
[[1]][[1]][[1]]
[1] 1
[[1]][[1]][[2]]
[1] 2
[[1]][[1]][[3]]
[1] 3
[[1]][[1]][[4]]
[1] 4
[[1]][[1]][[5]]
[1] 5
[[1]][[2]]
[[1]][[2]][[1]]
[1] 6
[[1]][[2]][[2]]
[1] 7
[[1]][[2]][[3]]
[1] 8
[[1]][[2]][[4]]
[1] 9
[[1]][[2]][[5]]
[1] 10
형식이 지정된 결과 목록이 원하는 결과와 같도록 목록을 늘리려면 어떻게해야합니까? 이 목록에 대한 추가 분석을 수행하려면 요소에 쉽게 액세스 할 수 있어야합니다.
이것이 당신이 원하는 것이 될 수 있습니까?
# Initial list:
myList <- list()
# Now the new experiments
for(i in 1:3){
myList[[length(myList)+1]] <- list(sample(1:3))
}
myList
outlist <- list(resultsa)
outlist[2] <- list(resultsb)
outlist[3] <- list(resultsc)
append
의 도움말 파일에 벡터 용이라고 나와 있습니다. 그러나 여기에서 사용할 수 있습니다. 나는 전에 그것을 시도했다고 생각했지만 OP의 코드에 나를 오도 할 수있는 이상한 이상이 있었다.
outlist <- list(resultsa)
outlist <- append(outlist,list(resultsb))
outlist <- append(outlist,list(resultsc))
같은 결과.
목록의 끝을 지나서 인덱스에 할당하는 것과 관련된 두 가지 다른 솔루션이 있습니다. 다음은 append
.
resultsa <- list(1,2,3,4,5)
resultsb <- list(6,7,8,9,10)
resultsc <- list(11,12,13,14,15)
outlist <- list(resultsa)
outlist <- append(outlist, list(resultsb))
outlist <- append(outlist, list(resultsc))
요청한 형식을 제공합니다.
> str(outlist)
List of 3
$ :List of 5
..$ : num 1
..$ : num 2
..$ : num 3
..$ : num 4
..$ : num 5
$ :List of 5
..$ : num 6
..$ : num 7
..$ : num 8
..$ : num 9
..$ : num 10
$ :List of 5
..$ : num 11
..$ : num 12
..$ : num 13
..$ : num 14
..$ : num 15
이 답변은 받아 들여지는 답변과 유사하지만 약간 덜 복잡합니다.
L<-list()
for (i in 1:3) {
L<-c(L, list(list(sample(1:3))))
}
변수에 목록 할당을 먼저 둠으로써
myVar <- list()
it opens the possibility of hiearchial assignments by
myVar[[1]] <- list()
myVar[[2]] <- list()
and so on... so now it's possible to do
myVar[[1]][[1]] <- c(...)
myVar[[1]][[2]] <- c(...)
or
myVar[[1]][['subVar']] <- c(...)
and so on
it is also possible to assign directly names (instead of $)
myVar[['nameofsubvar]] <- list()
and then
myVar[['nameofsubvar]][['nameofsubsubvar']] <- c('...')
important to remember is to always use double brackets to make the system work
then to get information is simple
myVar$nameofsubvar$nameofsubsubvar
and so on...
example:
a <-list()
a[['test']] <-list()
a[['test']][['subtest']] <- c(1,2,3)
a
$test
$test$subtest
[1] 1 2 3
a[['test']][['sub2test']] <- c(3,4,5)
a
$test
$test$subtest
[1] 1 2 3
$test$sub2test
[1] 3 4 5
a nice feature of the R language in it's hiearchial definition...
I used it for a complex implementation (with more than two levels) and it works!
ReferenceURL : https://stackoverflow.com/questions/14848172/appending-a-list-to-a-list-of-lists-in-r
'programing' 카테고리의 다른 글
Facebook 사용자가 페이지를 좋아했는지 확인하고 콘텐츠를 표시하는 방법은 무엇입니까? (0) | 2021.01.19 |
---|---|
h2 데이터베이스에서 스크립트 파일 실행 (0) | 2021.01.19 |
"git status"가 터미널에 색상을 출력하도록 강제합니다 (스크립트 내부). (0) | 2021.01.19 |
Joda 시간에서 시간을 변경하지 않고 시간대를 변환하는 방법 (0) | 2021.01.19 |
ASP.NET ID에 클레임을 추가하는 방법 (0) | 2021.01.19 |