在R上创建条件矩阵

时间:2018-01-26 10:50:10

标签: r

我正在处理R.上的问题。我尝试编写一个函数,在至少2列中选择值大于0的所有行。 (该函数有权选择包含值> 0的列数。)

输入矩阵:

     Col1 Col2 Col3 Col4
row1  0    0    0    2
row2  2    5    4    0
row3  0    0    8    3

输出矩阵:

     Col1 Col2 Col3 Col4
row2  2    5    4    0
row3  0    0    8    3

如果有人可以帮助我吗?谢谢 !

1 个答案:

答案 0 :(得分:1)

X <- your_matrix

X[which(rowSums(X > 0) >= 2), ]

抱歉,我没有注意到功能的要求。正如Axeman所说,你可以将这种方法包装在一个函数中,如下所示:

filter_matrix <- function(
        X, n = 2, na.rm = TRUE
    ){
    stopifnot(is.matrix(X) && is.numeric(X)
    stopifnot(is.numeric(n) && length(n) == 1)
    X[which(rowSums(X > 0, na.rm = na.rm) >= n), ]
    }