2011-09-29 3 views
14

명명 된 항목을 목록에 추가 할 때 해당 항목이 목록의 끝에 추가된다는 보장이 있습니까? 실제로 이것은 사실 인 것처럼 보이지만 위험한 가정인지 확실하지 않습니다.명명 된 항목을 명명 된 목록에 추가 - 목록의 끝에 추가 할 수 있습니까?

test = list() 
test[[ "one" ]] = 1 
test[[ "two" ]] = 2 # will always appear after "one"? 
test[[ "three" ]] = 3 # will always appear after "two"? 
+0

문자열 키'[[ 'one']]'또는 [[ '1']]'숫자 키가 아닌 [[1]]'을 사용하고 있습니다. 그리고 우리는 당신의 모든 문자열 키를 순서대로 정렬 할 수 있습니까? '[[ 'one']]'대신'[[ '1']]'같은 문자열 키를 사용할 수 있습니까? – smci

답변

20

문서화되어 있지 않은 것으로 보이면 (그럴 것 같지 않습니다), 나는 그것에 의지하지 않을 것입니다. 당신은 같은 일을하여 목록의 끝에 나타납니다 보장 할 수 있습니다 :

test <- list() 
test <- c(test, one=1) 
test <- c(test, two=2) 
test <- c(test, three=3) 
+2

그러나 목록에 항목을 추가하는 방법에 매우주의해야합니다. Rgames : tl [[2]] <- data.frame ('Rgames : tl <- 2)'의 결과를 보자. 2) ='Rgames : tl $ three <- 3' –

+0

@CarlWitthoft :'tl [[ '2']]'vs'tl [[2]]'에 대해 동작이 다를 수 있습니다. 당신이했던 것처럼) – smci

+1

'append (test, list (three = 3))'는 또 다른 옵션입니다 – baptiste

3

당신은 당신이 그것이 사실이라고 볼 수있을 R의 C 코드로 파 놓은 광산 만약 내가 의심하지만, 여호수아가 말한대로 그 문서화되지 않았습니다. 당신은 그러한 행동이 이 문서화되어야하는지에 대한 의견을 얻기 위해 R-dev에 대해 질문 할 수 있습니다. 이미 의존하는 기존 코드가있을 수 있습니다.

+2

Spacedman - R-dev에 문서화 해달라고 요청하는 것이 좋습니다. 감사! – SFun28

+3

음 ... 나는 목록의 새로운 요소 (또는 그 문제에 대한 데이터 프레임 또는 벡터)를 "끝"에 넣을 수는 없지만 힘들다. 요소를 정의하는 순간, 사용되지 않는 위치가 할당됩니다. "미사용"에 중점을 둡니다. 이것은 예를 들어 두 개의 요소를 갖는리스트에 제 3 아이템을 추가하는 것이 제 47 번째 위치에 할당되지 않을 것만 큼 분명해야한다. –

+2

길이 12리스트의 7 위 자리에 요소를 넣는 것은 왜곡 될 것이라고 동의하지만, 왜 끝이 아니라 시작이 되는가? 이름으로 요소를 추가 할 때 위치 정보를 제공하지 않으므로 별도로 문서화하지 않으면 언어를 자유롭게 배치 할 수 있습니다. 일부 언어의 경우 문자열 키의 해시 값에 따라 언어가 정렬 될 수 있습니다. – Spacedman