我需要函数从矩阵中返回一行,该行的零数最少。 例如: 矩阵
1:(0 0 0 2)
2:(3 0 4 3)
第二行的零较少,我们将其返回。
答案 0 :(得分:2)
在逻辑 rowSums
上使用 matrix
获取 0 的计数,然后用 which.min
换行以获取最少 0 行的索引。
m1[which.min(rowSums(!m1, na.rm = TRUE)),, drop = FALSE]
# [,1] [,2] [,3] [,4]
#[1,] 3 0 4 3
添加 drop
以防止 matrix
在只有单行/列作为子集输出时强制转换为 vector
,因为默认选项是 drop = TRUE
m1 <- rbind(c(0, 0, 0, 2), c(3, 0, 4, 3))
答案 1 :(得分:1)
使用 which.min
的另一个基本 R 选项
subset(mat,seq(nrow(mat)) == which.min(rowSums(mat==0)))