如何查找矩阵中填充的值最多的行?

How to find rows with most values filled in a matrix?

给定一个像这样的矩阵 (mat1):

mat1 <- matrix(c(1, "", 2, 3, 4, "", 2, 4, "", 5, 2, 1, 4, "", 3, 2, "", 3, "", ""), nrow = 4, ncol = 5)

我将如何找到具有最多非空字符串值的前 3 行?例如在mat1中,第1行有3个值,第2行有2个值,第3行有4个值,第4行有4个值。

有没有一种方法可以让我以某种频率 table 或至少 return 顶部行的向量来制表?

如果我们创建一个函数,我们可以转换为'long'格式,subset出空白元素,并得到行名称的dim属性的频率

f1 <- function(mat, n) {
   row.names(mat) <- seq_len(nrow(mat))
   head(sort(table(subset(as.data.frame.table(mat),
        Freq != "")$Var1), decreasing = TRUE), n)
 }

f1(mat1, 3)
#  3 4 1 
#  4 4 3 

显示的输出是一个命名向量,其名称表示行索引或行名称,值表示非空白的频率。用户指定的 n 参数给出顶部 n 非空白行

你可以这样做:

# Your matrix
mat1 <- matrix(c(1, "", 2, 3, 4, "", 2, 4, "", 5, 2, 1, 4, "", 3, 2, "", 3, "", ""), nrow = 4, ncol = 5)

# Transforming to data frame
df_mat <- as.data.frame(mat1)

# Quantity of null values
for (i in 1:nrow(df_mat)) {
  df_mat$COUNT[i] <- sum(df_mat[i,] == "")  
}

# Ordering the data frame
df_mat <- arrange(df_mat,desc(COUNT))