2013-04-16 3 views
8

이 재현 예는 매우 단순화 된 내 코드의 버전은 = TRUE 제거 다른 엔티티, na.rm이 (가) NaN을 (를) 삭제하는 이유는 무엇입니까? NA을 무시하고 NaN을 무시할 수 있습니까?NaN이는

ps : Windows7에서 64 비트 R 버전 3.0.0을 사용하고 있습니다.

편집 : 나는 너무 NaN 동안 그 is.na 반환 사실을 발견 좀 더 연구하면 ! 이것이 나를위한 혼란의 원인입니다.

is.na(NaN) 
> TRUE 

답변

6

그것은 언어의 결정입니다 :

> is.na(NaN) 
[1] TRUE 

is.nan는 차별화 :

> is.nan(NaN) 
[1] TRUE 
> is.nan(NA) 
[1] FALSE 

그래서 당신이 모두를 호출 할 필요가 있습니다.

+0

그래, 난 그냥이 문제를주의 :이 약


가장 좋은 방법은 명시 적으로 NaN 하나의 예를 처리하는 방법을 R을 알리는 것입니다), 즉 다른 질문입니다. 누락 된 가치에 대한 나의 생각은 변해야합니다. – Nishanth

+0

@ e4e5f4 아마이 동작을 선택하지 않았을 것입니다. 그러나 그것이 바로 그 것이다. –

+1

'sum '에 대한 도움은'na.rm = TRUE'가'NaN'과'NA'를 모두 없애 버리는 반면 ('? Extremes'는 그렇지 않습니다) 흥미 롭습니다. – mnel

3

na.rm 함수의 인수는 일반적으로 is.na() 또는 유사한 함수를 사용합니다.
그리고 is.na(NaN) == TRUE부터 관찰하고있는 동작을 얻습니다.

NaN도 NA로 처리해야합니까?

ifelse(any(is.nan(x)), NaN, min(x, na.rm=TRUE))