2009-09-08 3 views

답변

1

NA가 포함 된 행을 제거하려면 apply()를 사용하여 각 행을 확인하는 빠른 함수를 적용 할 수 있습니다. 예를 들면, 당신의 행렬 x는 경우,

goodIdx <- apply(x, 1, function(r) !any(is.na(r))) 
newX <- x[goodIdx,] 
5

은 내가 기능을 의미위한는 보통 기능 내에서 작동 na.rm이 말을 생각합니다. 나는 complete.cases와 함께 갈 것입니다 : http://stat.ethz.ch/R-manual/R-patched/library/stats/html/complete.cases.htm

의는 다음과 같은 3 × 3 행렬이 있다고 가정 해 봅시다 :

x <- matrix(c(1:8, NA), 3, 3) 

> x 
    [,1] [,2] [,3] 
[1,] 1 4 7 
[2,] 2 5 8 
[3,] 3 6 NA 

다음 당신이이 행렬의 전체 사례를 얻을 수

y <- x[complete.cases(x),] 

> y 
    [,1] [,2] [,3] 
[1,] 1 4 7 
[2,] 2 5 8 

complete.cases -function은 사례가 완료되었는지 여부를 나타내는 진리 값의 벡터를 반환합니다.

> complete.cases(x) 
[1] TRUE TRUE FALSE 

그리고 나서 행렬 x의 행을 인덱싱하고 ","를 추가하여 모든 열을 원한다고 말하십시오.

6

na.omit()은 행렬 (및 데이터 프레임)을 취하여 NA 값이없는 행만 반환합니다. 거짓 행을 삭제하면 complete.cases() 걸음 한 걸음 더 걸립니다.

> x <- data.frame(c(1,2,3), c(4, NA, 6)) 
> x 
    c.1..2..3. c.4..NA..6. 
1   1   4 
2   2   NA 
3   3   6 
> na.omit(x) 
    c.1..2..3. c.4..NA..6. 
1   1   4 
3   3   6