我想用纯矩阵运算而不是 for 循环来转换这段逻辑。逻辑是,在我的二进制值向量中,我想注意每个转换点(即 0 变为 1 和 1 变为 0 的位置)。否则我想保留原始值。虽然一个简单的循环对于小向量来说足够快,但我需要在大型数据集上多次执行此操作,因此需要通过矩阵提高效率。
x <- c(1,0,0,0,0,1,1,0,0,1,0,1,0,1,0,0,0,1);
y <- rep(-2, length(x));
y[1] <- x[1];
for(i in 2:length(x)){
if((x[i]==1 && x[i-1]==0) || (x[i]==0 && x[i-1]==1)){
y[i] = -1;
}
else{
y[i] = x[i];
}
}
y 的最终值为 1 -1 0 0 0 -1 1 -1 0 -1 -1 -1 -1 -1 -1 0 0 -1
我是 R 的新转换者,非常感谢提前