在R中,我需要一个自动化(矩阵可以有不同数量的列,因此标题并不总是相同)从矩阵中提取行的方法,这是基于单独应用于每一行的多个条件。具体来说,如果该行中的所有列(除了最后一列)相等且行中的最后一列是〜= 0,我想在新矩阵中包含一行。
除了输入数据之外,我无法返回并更改任何代码(即,一切都必须自动运行)。 diff的第一个for循环是计算dataSet中相应列之间的差异,而下一个for循环是提取满足条件的diff行。
Rows=nrow(dataSet)
Cols=ncol(dataSet)
diff <- matrix(, nrow = Rows,ncol = Cols/2)
for (i in 1:Cols/2) {
diff[,i]=dataSet[,i]-dataSet[,i+Cols/2];
}
last_change <- matrix(, nrow = Rows, ncol = Cols/2);
T=1;
col1 = ((Cols/2)-1);
col2 = Cols/2;
col3 = 0;
for (k in 1:Rows) {
if (TRUE==all.equal(diff[k,1],diff[k,2:col1])
& TRUE==all.equal(diff[k,col2],col3))
{
last_change[T,] <- subset(diff[k,]);
T=T+1;
}
}
上面给出了一个矩阵,其尺寸与diff相同(应该是相等的列,其中有很多行被削减),填充NA。 (我无法以自动方式进行矢量化,因为每次输入数据集改变时,$必须指示不同的数字和标题的标识。我是R的新手。我发现了许多类似主题的问题,但它们似乎都没有包含将多个条件应用于不断变化的列数(以及更改列名称)的能力。
答案 0 :(得分:0)
这是一个解决方案:
cfc file