R :(“自动”)基于应用于每行的多个条件提取行以更改列数

时间:2015-04-28 18:54:20

标签: r conditional-statements extract rows

在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的新手。我发现了许多类似主题的问题,但它们似乎都没有包含将多个条件应用于不断变化的列数(以及更改列名称)的能力。

1 个答案:

答案 0 :(得分:0)

这是一个解决方案:

cfc file