【发布时间】:2016-01-25 13:05:26
【问题描述】:
这是一个非常具体的问题;所以我只是告诉你我在处理什么:
我有一个包含 2 列的巨型矩阵 - 第 1 列是指时间,第 2 列是分子浓度。 分子信号是人为的,这就是基线平坦的原因(图片)。实际应该是有点吵
因此,我想在正态分布之外添加噪声; 我实际上已经量化了具有此基线值的元素:
numb=length(App[,2][App[,2]==min(App[,2])])
noise=rnorm(numb)
我现在正在努力将这种随机噪声添加到元素中
App[,2]==min(App[,2])
我尝试了一个 if 循环:
if(App[,2]==min(App[,2])) {
App[,2]=App[,2]=+noise
}
但由于某种原因它不起作用。 (错误“在 if (App[, 1] == min(App[, 1])) { : 条件的长度 > 1 并且只使用第一个元素)
你有什么建议吗?
最良好的祝愿,非常感谢!
【问题讨论】:
-
也许吧?
App[ App[,2] == min(App[,2])] ,2] = App[ App[,2] == min(App[,2])] ,2] +noise -
如果有必要,这里是错误的解释。
App[, 1]是一个长度为> 1的向量(比如n),min(App[, 1])是一个长度为1的向量。将两个向量与==进行比较时,返回的(称为ret)是一个长度为n的向量。由于if不知道如何处理这个向量,它采用第一个元素,因此如果App[1, 1] == min(App[, 1]是true,则满足if条件,反之亦然。但是,您可以使用ret索引App并继续。