R 如何基于布尔向量填充矩阵列?

R 如何基于布尔向量填充矩阵列?,r,vector,indexing,boolean,R,Vector,Indexing,Boolean,我有一个两列矩阵,m。我有一个布尔向量索引,它是根据m[,1]中的序列生成的。我想将m[,2]中的一些值替换为m[,1]中的值,但仅当索引中的同一行为真时 我相信有一个很好的方法可以做到这一点,而不是循环,但我不能让我的头周围的时刻。我试过很多方法,但都失败了。这是我的密码: m <- matrix(nrow=20,ncol=2) m[,2] <- 0 m[,1] <- c(0, 0, 0, 1, 1, 1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -

我有一个两列矩阵,
m
。我有一个布尔向量
索引
,它是根据
m[,1]
中的序列生成的。我想将
m[,2]
中的一些值替换为
m[,1]
中的值,但仅当
索引中的同一行为
真时

我相信有一个很好的方法可以做到这一点,而不是循环,但我不能让我的头周围的时刻。我试过很多方法,但都失败了。这是我的密码:

m <- matrix(nrow=20,ncol=2)
m[,2] <- 0 
m[,1] <- c(0, 0, 0, 1, 1, 1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1, 1)
index <- (m[,1]==Lag(m[,1])) & (m[,1]!=Lag(m[,1],2))
m这应该可以:

m[which(index),2] <- m[which(index),1]
请注意,如果
索引中没有
NA
值,那么
m[index,2]
等也会起作用,这应该起作用:

m[which(index),2] <- m[which(index),1]
请注意,如果
index
中没有
NA
值,那么
m[index,2]
等也会起作用