16

R に anx 3 行列があり、最後の列が x より小さいすべての行を削除したいと考えています。これを行う最善の方法は何ですか?

4

3 に答える 3

16

この関数を使用することもできsubset()ます。

a <- matrix(1:9, nrow=3)  
threshhold <- 8  
subset(a, a[ , 3] < threshhold)  
于 2012-04-21T09:03:32.837 に答える
5

@JeffAllen と同じアプローチですが、もう少し詳細で、任意のサイズの行列に一般化できます。

    data <- rbind(c(1,2,3), c(1, 7, 4), c(4,6,7), c(3, 3, 3), c(4, 8, 6))
    data
         [,1] [,2] [,3]
    [1,]    1    2    3
    [2,]    1    7    4
    [3,]    4    6    7
    [4,]    3    3    3
    [5,]    4    8    6
    #
    # set value of x
    x <- 3
    # 
    # return matrix that contains only those rows where value in 
    # the final column is greater than x. 
    # This will scale up to a matrix of any size 
    data[data[,ncol(data)]>x,]
         [,1] [,2] [,3]
    [1,]    1    7    4
    [2,]    4    6    7
    [3,]    4    8    6
于 2012-04-20T19:27:17.507 に答える
2
m <- matrix(rnorm(9), ncol=3)
m <- m[m[,3]>0,]

行列を作成し、その行列を再定義して、3 番目の列が 0 より大きい行のみを含めます ( m[,3] > 0)。

于 2012-04-20T19:18:07.093 に答える