또는 다르게 입력하십시오. 중첩 목록에 [[
연산자를 사용하려면 어떻게해야합니까?특정 중첩 수준에서 목록의 모든 요소를 선택하는 방법은 무엇입니까?
목록의 깊이 수준을 결정하는 방법을 물어볼 때 one에 대한 후속 질문으로 간주 할 수 있습니다. @Spacedman과 @flodel에서 누가 재귀 함수를 제안했는지에 대한 답변을 얻었습니다. 두 솔루션 모두 상당히 비슷하고 나를 위해 일했습니다.
그러나이 기능에서 얻은 정보로 무엇을해야하는지 아직 알지 못했습니다.
myList$firstLevel$secondLevel$thirdLevel$fourthLevel
# fourthLevel contains 5 data.frames and thirdLevel has
# three elements
가 어떻게 mylist
에서 다시 모든 15 data.frames를 얻을 수 있습니다 :의 나는 수준 i
에서 중첩 된 목록을 가지고 있고이 같은 모든 i-th
레벨 요소를 포함하는 목록을 다시 취득하고 싶은 말은하자? 예 :
lapply(mylist,"[[",2)
그러나 분명히 나는 첫 번째 수준에서 모든 목록 요소의 두 번째 요소를 얻습니다.
편집 : 나는 extract
respectivel ?"[["
의 도움으로 다음하지만 정말 지금까지 주위에 내 머리를 정리 할 수 발견 : "[[ can be applied recursively to lists, so that if the single index i is a vector of length p, alist[[i]] is equivalent to alist[[i1]]...[[ip]] providing all but the final indexing results in a list."
편집 : 이 같은 루프를 중첩 끝내고 싶지 않아 .
o <- list()
i=1
for (i in 1:2){
o[[i]] <- mylist[[c(i,1,1,1)]]
}
이것은 mylist [[c (1,2)]]가'mylist'의 첫 번째 요소의 두 번째 요소를 얻을 수 있음을 의미합니다. –
감사합니다. Romain, 실제로이 방법을 사용하면 매우 높은 수준의 최대 값을 결정한 다음 루프를 반복 할 수 있습니다. 그래서 다음 단계가 될 것입니다 : 재귀 적으로 내 목록의 길이를 찾는 방법? –
각 레벨의 길이 또는 가장 낮은 레벨의 목록 요소의 길이를 묻는 중입니까? –