首页 > 解决方案 > 在移动到下一列之前是否有读取特定值的 R 代码?

问题描述

在移动到下一列之前,是否有一个 R 代码按列读取矩阵中的特定值(超过 x)?该值每行只能确认一次。此外,每列的总和必须超过 15 的值。

        Col1  Col2  Col3 Col4  Col5
  Row1  16*   12     16     6    8
  Row2  16    10      8    17   10*
  Row3  12    13     18*    9   17
  Row4  13     7     12    19*  15
  Row5  7     17*    15    15   13
  Row6  14     3     10     6   10*

  Sum   16    17     18    19   20

除了第 5 列将使用第 2 行和第 6 行的总和超过值 15 (20)

标签: rmatrixlinear-programming

解决方案


此循环获取每列中超过 15 的第一个值,并且每行仅使用一次。它通过用零覆盖所选行来实现这一点。它不是一个完整的解决方案,但它可能仍然有帮助。

chosenNumber <- c()
for(i in 1:ncol(mydata)){
    where <- min(which(mydata[,i]>15))
    chosenNumber[i] <- mydata[where,i]
    mydata[where,] <- 0 
}

> chosenNumber 
[1] 16 17 18 17 NA

数据:

mydata <- as.matrix(read.table(text='        Col1  Col2  Col3 Col4  Col5
  Row1  16   12     16     6    8
  Row2  16    10      8    17   10
  Row3  12    13     18    9   17
  Row4  13     7     12    19  15
  Row5  7     17    15    15   13
  Row6  14     3     10     6   10',header=T))

推荐阅读