如何在这种情况下编写函数?

时间:2021-06-16 21:22:31

标签: r

我需要函数从矩阵中返回一行,该行的零数最少。 例如: 矩阵

1:(0 0 0 2)
2:(3 0 4 3)

第二行的零较少,我们将其返回。

2 个答案:

答案 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)))