矩阵积分运算,避免循环

时间:2015-12-26 02:30:52

标签: r matrix

我有一个矩阵(15000 * 3000)目标是根据原始矩阵有条件地分配新值。例如,我想要实现的标准是:

这就是我现在的代码设置方式。

for( i in 1:2000 ) {
    for( j in 1:15000 ) {
        if(DF[j,i]>0 && DF[j-1,i]<0) DF1[j,i]=1 
        else if (DF[j,i]<0 && DF[j-1,i]>0) DF1[j,i]=0
    }
}

DF是原始矩阵。

DF1是新形成的矩阵

还有其他办法吗?更快的方式?

我已经读过应该避免R中的循环。

1 个答案:

答案 0 :(得分:0)

DF1[-1,][DF[-1,]>0 & DF[-nrow(DF),] < 0] <- 1
DF1[-1,][DF[-1,]<0 & DF[-nrow(DF),] > 0] <- 0

因为两个矩阵(DF1,[DF[-1,]>0 & DF[-nrow(DF),] < 0])的维度不同,所以存在问题 DF1[DF[-1,]>0 & DF[-nrow(DF),] < 0] <- 1