2016-06-29 3 views
-1

저는 R이 처음인데 목록에 대해 몇 가지 이해하려고합니다. 나는 다음 (내 생각) 나는 (I 단일 브래킷을 사용하고 있기 때문에) 값의 두 번째 목록을 반환하는 R 부탁 해요 때문에 이해목록 및 대괄호

n = c(2, 3, 5) 
s = c("aa", "bb", "cc", "dd", "ee") 
b = c(TRUE, FALSE, TRUE, FALSE, FALSE) 
x = list(n, s, b, 3) 

: 나는 다음과 같은 말해봐.

x[2] 
# [[1]] 
# [1] "aa" "bb" "cc" "dd" "ee" 

이를 내가 하나의 값을 반환하도록되어 이중 괄호를 사용하고 있기 때문에 이해가 안 돼요. 사실, 나는 내가 R이 여기에 돌아올 것이라고 기대할 것이 아니에요. 하나의 값을 요구하지만 두 번째 객체 그룹은 또 다른리스트입니다.

x[[2]] 
# [1] "aa" "bb" "cc" "dd" "ee" 
+0

@ ZheyuanLi - 한 번 보았습니다. "[["하나의 요소를 선택합니다. 그렇다면 왜 5 가지 요소를 돌려 주는가? –

+1

@RandyMinder이 목록은 벡터로 구성됩니다. "목록 요소"는 벡터입니다. '[['는 단일 벡터를 반환합니다. '['는 벡터 또는 벡터의 다른 목록을 반환합니다. –

답변

4

올바른 예제가 here 인 것처럼 보입니다. 그러나 이것이 일반적인 목록 예일 수도 있습니다.

본질적으로 x[2]은 길이가 1 인 list이고 x의 두 번째 항목을 포함하는 "슬라이스"입니다. x[[2]] x의 두 번째 항목입니다. class(x[2])class(x[[2]])으로이를 확인할 수 있습니다.

프로그래밍에서 목록을 처리 할 때 단일 대괄호를 사용하지 말고 벡터, 배열 및 data.frames에 대해 예약하는 것이 도움이된다는 것을 알았습니다.

-1

X이 목록의 목록이되었습니다. x을 실행하면 모든 요소를 ​​가져와야하므로 x[[2]] 결과가 의미가 있습니다.

두 번째 목록의 첫 번째 요소를 가져 오려면 x[[2]][1] "개체 x의 두 번째 목록에있는 첫 번째 개체"를 사용해보십시오.

R의 또 다른 유용한 트릭은 객체의 구조를 보여주는 str(x)을 사용하는 것입니다.이 경우에는 목록 유형과 그 내용이 표시됩니다.

+0

x [2]와 x [2]가 똑같은 것을 반환하는 이유는 여기에서 필자의 주요 혼란이 있다고 생각합니다. 그들은 다른 작업을 수행합니다. –

+0

@RandyMinder - 가지고있는'x''list'는 4 개의 단일 하위 구조를 가지고 있습니다. 또한'list's입니다. 'x [2]]는'x '에 저장된 두 번째'list'와 같은 ** single ** 하위 구조를 선택합니다. – thelatemail

+0

그러나 @RandyMinder,'x [2]'및'x [[2 ]]'같은 것을 반환하지 마십시오 : 하나는 5 개의 문자로 구성된 벡터이고, 하나는 하나의 요소를 가진 목록이며, 그 요소는 5 개의 문자로 구성된 벡터입니다. 이 목록에 접근하는 것은 [Inception] (http://www.imdb.com/title/tt1375666/)과 유사하다 :'x [2]'는'x [2] [1]'과 동일하다.'x [ 2] [1] [1] [1]'등, 목록과 같이 왜 이런 일이 일어나는지 보는 것이 매우 중요합니다. – r2evans