我正在处理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
如果有人可以帮助我吗?谢谢 !
答案 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), ]
}