我有一个矩阵(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中的循环。
答案 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
。