2011-01-28 5 views
16

NAs를 표시 할 조각이 있지만, 알아낼 수는 없습니다.NA의 색인을 표시하는 방법은 무엇입니까?

try(na.fail(x)) 
> Error in na.fail.default(x) : missing values in object 
# display NAs 
myvector[is.na(x)] 
# returns 
NA NA NA NA 

나는이에서 실제로 너무 도움이되지 않습니다 NA 벡터의 길이를 얻을 수있는 유일한 때 추적하려고 내 코드에서 버그로 인해 발생 NAS에. NA 요소의 색인을 얻으려면 어떻게해야합니까?

는 또한 시도 : 같은 효과를

subset(x,is.na(x)) 

합니다.

EDIT :

y <- complete.cases(x) 
x[!y] 
# just returns another 
NA NA NA NA 
+0

그러나 왜 숫자 인덱스가 논리적 인덱스보다 더 도움이됩니까? – Marek

+0

@Marek, R에 일부 데이터 세트를로드하고 df에서 함수를 실행했습니다. 결과적으로 일부 NAs는 강제로 인해 도입되었습니다. 이 함수는 작동합니다 ... 그래서 분명히 가져온 파일에 문제가있었습니다. 파일이 꽤 컸고 어디에서 찾을 지 몰랐습니다. 나는 linenumbers에 대한 프록시를 찾았습니다. –

답변

29

을 당신이 원하는 어떤 함수 :

which(is.na(arr)) 
+0

예수. 이거 야. Jivlain에게 감사드립니다. 어떤 것이 is.na의 See also 부분에도 있다면, 한두 시간을 절약했을 것입니다. 고마워요! –

1

is.na는() 원래의 데이터 프레임으로 동일한 형상 부울 인덱스를 반환한다.

즉, 값이 인 mxn 색인의 모든 셀은 원래 데이터 프레임의 NA 값에 해당합니다. 원하는 경우

당신은 그 (것)은 NAS를 변경하려면이를 사용할 수 있습니다

DF[is.na(DF)] = 999 

적어도 하나의 NA와 데이터 행의 총 수를 얻으려면 :

cc = complete.cases(DF) 
num_missing = nrow(DF) - sum(ok) 
+0

thx, 대답. 불행히도 내 문제는 아직 다루지 않습니다. NAs는 내 경우에 강제로 도입되었습니다 (Custon 기능과 관련된 문제로 인해). 따라서 어떤 라인이 그 NAs 라인인지 알고 싶습니다. 100K + 회선 중 네 개의 NAs가 있으며 어떤 회선인지 알고 싶습니다. –

0

(Dataset $ variable == "")은 특정 열의 해당 행 번호를 반환합니다.

관련 문제