19

私は2つのことを試してみたい:

  1. NA/NaN/Inf を含む行を削除する方法
  2. NA/NaN/Inf のデータ ポイントの値を 0 に設定するにはどうすればよいですか。

これまでのところ、NA 値に以下を使用してみましたが、警告が表示されています。

> eg <- data[rowSums(is.na(data)) == 0,]
 Error in rowSums(is.na(data)) : 
       'x' must be an array of at least two dimensions
     In addition: Warning message:
     In is.na(data) : is.na() applied to non-(list or vector) of type 'closure'
4

4 に答える 4

38

私は自分の好きな方法で帽子をリングに投げ込むと思います:

# sample data
m <- matrix(c(1,2,NA,NaN,1,Inf,-1,1,9,3),5)
# remove all rows with non-finite values
m[!rowSums(!is.finite(m)),]
# replace all non-finite values with 0
m[!is.finite(m)] <- 0
于 2013-04-02T20:17:33.890 に答える
13
library(functional)
m[apply(m, 1, Compose(is.finite, all)),]

デモンストレーション:

m <- matrix(c(1,2,3,NA,4,5), 3)
m
##      [,1] [,2]
## [1,]    1   NA
## [2,]    2    4
## [3,]    3    5

m[apply(m, 1, Compose(is.finite, all)),]
##      [,1] [,2]
## [1,]    2    4
## [2,]    3    5

注: Compose(is.finite, all)と同等ですfunction(x) all(is.finite(x))

値を 0 に設定するには、行列のインデックスを使用します。

m[!is.finite(m)] <- 0
m
##      [,1] [,2]
## [1,]    1    0
## [2,]    2    4
## [3,]    3    5
于 2013-04-02T20:00:06.513 に答える