如果当前行的值与R中的上一行相同,则删除当前行
作为标题,我起草了以下脚本:如果当前行的值与R中的上一行相同,则删除当前行,r,for-loop,vectorization,R,For Loop,Vectorization,作为标题,我起草了以下脚本: set.seed(1) temp <- data.frame(cola=sample(1:10,100,replace=TRUE), stay=TRUE) for (loop in (2:nrow(temp))) { temp[loop,'stay'] <- ifelse(temp[loop,'cola']==temp[loop-1,'cola'],FALSE,TRUE) } temp <- tem
set.seed(1)
temp <- data.frame(cola=sample(1:10,100,replace=TRUE),
stay=TRUE)
for (loop in (2:nrow(temp))) {
temp[loop,'stay'] <- ifelse(temp[loop,'cola']==temp[loop-1,'cola'],FALSE,TRUE)
}
temp <- temp[temp[,'stay']==TRUE,]
我不喜欢那里的for循环,我们能以某种方式将其矢量化吗?在这里,我们可以检查当前行,即temp$cola[-1]是否等于=前一行temp$cola[-nrowtemp],然后将c与FALSE连接,以获得与nrowtemp相同的长度,并将其用作索引来删除行。这也适用于角色 那么:
temp <- temp[c(TRUE, diff(temp$cola) != 0),]
temp <- temp[c(TRUE, diff(temp$cola) != 0),]