2013-09-02 1 views
0

R에서 목록을 사용하는 것은 까다로울 수 있습니다. NULL에 대한 목록 요소를 설정하면 목록에서 제거와 동일한 지R의 목록 요소를 참조하는 것이 모호합니다. 올바르게 수행하는 방법은 무엇입니까?

opts = list() 
opts$value = NULL 
opts$valueDefault = c(1,2,3) 

print(opts)    # note: displaying the whole list does not reveal 
          # the element "value" 
$valueDefault 
[1] 1 2 3 



print(opts$value)   # with this notation I do not get the correct (intended) 
          # result 
[1] 1 2 3 

print(opts[["value"]])  # with this notation I do 
NULL 
+1

목록 요소를 NULL로 설정하는 것은 목록에서 제거하는 것과 같습니다. 그 시점의 목록에는 문자 그대로 valueDefault라는 단일 요소 만 들어 있습니다. 차이를 보려면 값을 대신 NA로 설정하십시오. – Dason

+1

당신은'? "$"' – Dason

+0

을 읽어야합니다. 매우 빠른 응답을 보내 주셔서 감사합니다. (이미 존재하지 않는) NULL 요소를 참조하는 것은 물론 NULL을 반환했습니다. done (opts $ another) – Egus

답변

3

참고 : 나는 이름의 동일한 첫 부분에 목록 요소를 참조하는 것이 모호 알고하지 않았다. 그 시점의 목록에는 문자 그대로 valueDefault라는 단일 요소 만 들어 있습니다. 차이를 보려면 값을 대신 NA로 설정하십시오.

?"$"을 읽고 더 많은 정보를 얻습니다. 간단히 요약하면 $을 통한 참조와 [[을 통한 참조의 차이점은 $은 부분 일치를 수행한다는 것입니다. 그래서 귀하의 목록에만 valueDefault가 포함되어 있고 opts$value이라고 말하면 valueDefault를 참조해야한다는 것을 알았습니다. opts[["value"]] 부분 일치를 시도하지 않습니다. (기본값)

1

목록 요소를 NULL으로 만들려면 NULL으로 목록을 만들어야합니다.

opts <- list(value = NULL) 

> opts 
$value 
NULL 
관련 문제