목록에서 여러 요소 선택


82

R에 약 10,000 개의 요소 목록이 있습니다. 5, 7, 9 요소 만 선택하고 싶다고 가정 해 보겠습니다. for 루프없이 어떻게 할 수 있을지 모르겠습니다.

나는 같은 것을하고 mylist[[c(5,7,9]]싶지만 작동하지 않습니다. 나는 또한 lapply기능 을 시도했지만 작동하지 못했습니다.


17
문서에서에서 발견 ?"[[": 사이의 가장 중요한 차이점 [, [[그리고 $(가) 있다는 것입니다 [다른 두 단일 요소를 선택하는 반면 두 개 이상의 요소를 선택할 수 있습니다.
A5C1D2H2I1M1N2O1R2T1

@mrdwab의 설명에 더해, 이것은 R의 벡터화 된 세계이기 때문에 "단일 요소"는 벡터 일 수 있습니다!
seancarmody

답변:


136

mylist[c(5,7,9)] 해야합니다.

결과 목록의 하위 목록으로 반환되는 하위 목록을 원합니다. 당신은 그것을 위해 사용하지 않습니다 [[]](또는 오히려 함수는입니다 [[)-Dason이 주석에서 언급했듯이 [[요소를 잡습니다.


8
좀 더 자세한 정보를 추가하기 위해- "["는 하위 목록을 반환하므로 여러 입력을 사용할 수 있습니다. "[["는 실제로 요소 자체를 가져 오므로 목록을 반환하지 않기 때문에 단일 입력 만받을 수 있습니다 (요소 자체가 목록이 아닌 경우).
Dason 2012-08-25

이것이 벡터화되어 있습니까? 두 개의 목록이 있습니다 : b1 천만 개의 요소를 포함합니다. filter_bins각 요소가 색인 인 목록입니다. 따라서 b동일한 인덱스 를 가진 요소 만 가져 오려면 lapply(filter_bins, function(x) b[x, ]) b [x,]가 행의 하위 집합 만 반환합니다 (각 요소는 filter_bins에 의해 선택됨) .. 이것이 의미가 있기를 바랍니다. 내 질문은 이것이 매우 느리다는 것입니다
masfenix 2014-10-23

@masfenix 세부 사항을 설명하는 새 질문을 생성해야합니다.
Glen_b 2014

위의 해결책은 dplyr :: select () 및 contains ( 'some text ")와 같은 방법으로 수행 할 수 있습니까?
Derelict

3
@HermanToothrot 당신은하지 않습니다. 적어도 직접적으로는 아닙니다. 추출하려는 인덱스에 lapply 또는 sapply 할 수 있으며를 사용하여 해당 요소를 반복적으로 가져올 수 [[있습니다. 하지만 여러 요소를 추출하려는 경우 실제로는 하위 [
목록을 가져와야
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.