얻을

2014-01-28 1 views
1

내가 다음과 같은 구조가 있다고 가정 할 수 있습니다 중첩 된 목록의 요소를 설정하는 방법 :얻을

R-코드

listAll = list() 
list3 = list(id=14,attr1 = '',attr2='n4',attr3=list(text1='tx1',text2='')) 
list4 = list(id=15,attr1 = '',attr2='n1',attr3=list(text1='tx1',text2='')) 
listAll = append(listAll,list(values=list3)) 
listAll = append(listAll,list(values=list4)) 
str(listAll) 

#result 

List of 2 
$ values:List of 4 
..$ id : num 14 
..$ attr1: chr "" 
..$ attr2: chr "n4" 
..$ attr3:List of 2 
.. ..$ text1: chr "tx1" 
.. ..$ text2: chr "" 
$ values:List of 4 
..$ id : num 15 
..$ attr1: chr "" 
..$ attr2: chr "n1" 
..$ attr3:List of 2 
.. ..$ text1: chr "tx1" 
.. ..$ text2: chr "" 

가 어떻게 예를 들어 ID에 속하는 ATTR2을/얻을 설정할 수 있습니다 14? ID이 인덱스

  • 에 해당하는
  • 가져 오기 목록을 검색

    1. 받기 지수 :

      나는 ... 내가 할 일은 (GET에 대한) 것이 어려울 수 없습니다 생각 2 단계의 목록에서 $ attr1 값을 얻으십시오.

    불행히도 나는 하나의 포인트를 얻는 방법을 모릅니다.

    추측 된 내가 가지고있는 ID = 14 (두 개 및 3 개) 해당 1..the 다음 단계가 될 것 인덱스 :

    listAll[[1]]$attr2 #results "n4" 
    

    그래서 질문이 예에서 (인덱스를 얻는 방법이다 = 1) id = 14와 일치합니다. 아무도 도와 줄 수 있습니까?

  • 답변

    3

    당신은 sapply

    ## sapply(listAll, "[[", "id") 
    ## werte werte 
    ## 14 15 
    

    을 사용하여 원하는 것을 얻을 수 있습니다 그럼 당신이

    which(sapply(listAll, "[[", "id") == 14) 
    ## werte 
    ##  1 
    
    which(sapply(listAll, "[[", "id") == 15) 
    ## werte 
    ##  2 
    
    +0

    같은 인덱스가 대단히 감사합니다 얻을 which을 적용 할 수 있습니다! – user3246502