2013-04-16 4 views
1

내 이전 질문 - NaN is removed when using na.rm=TRUE의 후속 조치로서, (큰) 코드 기반을 최소한으로 변경하여 해결 방법을 찾고 있습니다. 내장 된 is.na 함수 재정의

내가 어떤 작품이,하지만

my.is.na <- function(x) 
{ 
    ifelse(is.na(x) & !is.nan(x), TRUE, FALSE) 
} 

을 시도하지만 무시하려면 내장 is.na 기능. 함수의 이름을 is.na으로 변경하면 분명히 무한 재귀가 발생합니다. 내 옵션은 무엇입니까?

추신 : 모든 코드에서 is.na(NaN)FALSE을 반환한다고 가정하므로 무시하려고합니다. 이것은 합법적 인 방법이지만, 무엇에 대해 경우

+2

'na.rm'이'max'와'min'과 같은 원시 함수 내에서 어떻게 동작 하는지를 바꾸려고한다면,이 함수들을 다시 쓰는 것이 더 낫습니다. – mnel

+0

방금 ​​이전 질문을 읽고 거기서'max()'호출에'NaN'을 유지하기를 원한다면, 최대 값은 얼마입니까? @mnel에 동의하고 여기에 계획된 대안 대신에'max' 함수를 다시 작성합니다. –

+1

@mnel - 내 대답과 같이 대답 할 때 의도하지 않은 많은 결과가 나타날 수 있으므로 더 현명한 선택입니다. – thelatemail

답변

0

나는 확실하지 않다 :

old.na <- is.na 
is.na <- function(x) 
{ 
    ifelse(old.na(x) & !is.nan(x), TRUE, FALSE) 
} 

이것은 R에서 몇 가지 규칙을 위반할 수 있으며 다른 나쁜 영향을 미칠 수도 있지만, 적어도 당신이했던 방식으로 동작합니다 염두에 두십시오 ...

+0

정말 소름 끼치는 광경으로 정말 해키. 나는 그것이 작동해야한다고 생각하지만'is.na'는 다른 모든 문맥에서는 어디에서도 호출되지 않습니다. 왜냐하면 그것은 일반적인 함수이고 아마도 그러한 경우에 잘못 행동하기 시작할 것입니다. 그러나 이러한 것들을 가진 것은 생산에서 시험해야 할 수도 있다는 것입니다. 그리고 그때까지는 너무 늦었습니다 ... 아니면 그게 아닙니까? : – daikonradish

+0

나는 이것을 thedailywtf에 제출한다 :-) –

+0

이것은 다른 패키지에서'is.na'를 호출하는 함수가 아니라 코드에만 영향을 미친다. – hadley

관련 문제