2013-10-04 2 views
1

3 개의 벡터가 포함 된 목록이 있습니다.목록의 값 사용

mylist <- list(a = c(1,2), 
       b = c(3,4), 
       c = c(5,6)) 

, 예를 들면, sum() 기능을 갖는 세 개의 오브젝트의 처음 값에 대한 계산을 수행 할 수있는 간단한 방법이 있는가?

내가 좋아하는 많은 것들을 시도 :

sum(mylist[c(a, b, c)][1]) 

작동하지 않는 코드 행,하지만 내가 뭘하려고 오전에 대한 통찰력을 제공합니다.

도움 주셔서 감사합니다.

답변

5

사용 sapply

> sum(sapply(mylist, "[", 1)) 
[1] 9 

보너스 재미있는 사실 : 당신은 [[ ]]의 내부 c()를 사용할 수 있습니다

sum(sapply(seq(mylist), function(i) mylist[[ c(i, 1) ]])) 
+0

코드의 두 번째 줄에서, R은'i'가'1''''''''''''와'3'''' 값을 취한다고 자동적으로 추정합니까? – SavedByJESUS

+1

@SavedByJESUS, 이는 값이지만 "자동"이 아닙니다. 'i'는'sapply'의 첫 번째 인수에있는 값을 취합니다.이 경우 seq (mylist)는 목록의 각 요소에 정수를 생성합니다. –

+0

나는 아직도 도움말 파일에 나타나지 않는'sapply' 함수의 "["인수에 놀랐습니다. 귀하의 답변에 감사 드리며, 이제 그것을 알고 있으며 목록을보다 잘 활용하고 있습니다. – SavedByJESUS

2

하지 매우 효율적인 솔루션 :

sum(unlist(lapply(mylist,'[',1))) 
[1] 9 
+2

당신은'사용하려는 경우 unlist', 당신은'use.names'를 꺼야합니다. –