我正在寻找一个矢量化解决方案。假设我生成了100个10抽样的样本。接下来,我想找到累积和矩阵的第一个元素的第一个索引,这意味着某些条件,比如> = 10。然后,我想将每一行的所有元素相加,直到满足该条件的第一个元素的索引。 MWE:
set <- c(1, 5, 7, 13, 15, 17)
samp <- samp <- matrix(sample(set, size = 100*10, replace = TRUE), nrow=simCount) # generate 100 samples of 10 draws
b <- matrix(apply(samp, 1, cumsum),
nrow = 100, byrow=TRUE) >= 10 # compare each element with 10, return boolean
我不确定如何将apply
与which(x)=="TRUE"
一起使用。我尝试了一些变化,但我不确定它是如何正确编码的。
在我得到之后,我将能够使用apply(b, 1, min)
返回每行> = 10的第一个元素(最小索引)。
答案 0 :(得分:2)
请为“随机”示例设置种子:
$servername = 'localhost';
$username = 'root';
$pass = 'root';
$database = 'tutor_database';
try {
$conn = new PDO("mysql:host=$servername;dbname=$database", $username, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// OBTAIN ROWID FROM $_GET
if(isset($_GET['rowid'])) {
$id = $_GET['rowid'];
}
// DELETE SPECIFIED ROW
$sql = "DELETE FROM users WHERE id = ".$id;
$conn->exec($sql);
echo "Record deleted!";
} catch(PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
说明:
set.seed(111)
samp <- matrix(sample(1:5, s=1000, r=T), nrow=100)
(answer1 <- samp[which(apply(samp,1,function(x)sum(x)>30)),1])
# [1] 4 3 3 3 1 1 3 5 2 4 2 5 4 2 4 1 3 2 4 4 5 4 2 4 5 5 4 5 3 3 1 1 2 1 4 3 4 5
#[39] 1 5 1 4 4 3 3 2 5 5
好吧,如果添加10个正整数,apply(samp,1, function(x) sum(x) > 30)
将始终为真。
适用于此行的每一行的“samp”。
>=10
返回x的所有TRUE值的索引。 (感兴趣的行)
which(x)
(由其返回的行)samp[
(,
)st列1
...基本索引
从外部逐步展开,以便更好地理解。
]
答案 1 :(得分:2)
我们可以使用rowCumsums
library(matrixStats)
library(matrixStats)
apply(rowCumsums(samp)>=10, 1, which.max)