【发布时间】:2018-09-24 01:05:00
【问题描述】:
我正在尝试将过滤器应用于大型矩阵。矩阵“logcounts1”由 8978 行和 4 列组成。
过滤器应该按行应用,这样我就可以选择那些至少有一个值超出区间的行。过滤器使用由每行的平均值组成的间隔作为中心值 + - 标准偏差。每行的平均值和SD分别包含在向量“Average1”和“SDr1”中。
我还为至少一个列值超出区间范围的行定义了矩阵“alpha”,并为存储其值始终保持在区间内的行定义了“beta”。
for (i in 1:8978) {
if (logcounts1[i,1] > average1 [i]+SDr1[i] | logcounts1[i,2] > average1 [i]+SDr1[i] | logcounts1[i,3] > average1 [i]+SDr1[i] | logcounts1[i,4] > average1 [i]+SDr1[i] | logcounts1[i,1] < average1 [i]+SDr1[i] | logcounts1[i,2] < average1 [i]+SDr1[i] | logcounts1[i,3] > average1 [i]+SDr1[i] | logcounts1[i,4] > average1 [i]+SDr1[i]) {
alpha <- rbind(alpha,logcounts1[i,])
} else {
beta <- rbind(beta, logcounts1[i,])
}
}
我真的希望你们能帮助我,我对此很陌生。最好的
基本上,红色单元格是区间内的值(mean+-StandardDeviation)。然后,具有超出范围值的第 1,2 和 5 行应存储在新矩阵“alpha”中,因此输出应为:
此外,不包含任何超出范围值的行也应存储在另一个矩阵(“beta”)中,输出:
【问题讨论】:
-
你能展示一个小样本输入和输出吗?循环似乎没有必要,但如果没有测试用例就很难确定。只需共享一个包含 5 行和预期输出的示例矩阵。
-
我其实不知道如何在cmets部分分享一个表...
-
不要在 cmets 部分共享一个表。单击“编辑”按钮并在您的问题中分享。如果您在 R 中有一个表
x,您可以使用dput(x)获得一个复制/粘贴对象定义。如果你有一个大矩阵,你可以分享前 6 行的dput(head(x))。或者你可以分享一个类似x = matrix(c(...))的定义。 -
好吧,我想我是按我的方式做的......
-
数据图像没有用。我希望能够测试代码。我不想将您图片中的数字输入 R。请使用有效的 R 语法发布示例。