我想用純矩陣操作而不是循環來轉換這段邏輯。邏輯是,在我的二進制值向量中,我想要注意每個轉換點(即0轉爲1,其中1轉爲0)。否則,我想保留原始值。雖然一個簡單的循環對於小向量來說足夠快,但我需要在大數據集上執行多次這個操作,因此需要通過matrics提高效率。R - 通過向量操作的邏輯操作
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,許多在此先感謝
謝謝你這個作品!我甚至不知道rle是否存在:) – user1480926