作为标题,我已经起草了如下脚本:
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-loop
,我们能以某种方式对其进行矢量化吗?
答案 0 :(得分:0)
在这里,我们可以检查current row
是否。 temp$cola[-1]
与上一行==
相等(temp$cola[-nrow(temp)]
),然后与c
连接(FALSE
)以获得与nrow(temp)
相同的长度并使用它作为删除行的索引。这也适用于characters
。
indx <- with(temp, c(FALSE,cola[-1]==cola[-nrow(temp)]))
temp[!indx,]
答案 1 :(得分:0)
怎么样:
temp <- temp[c(TRUE, diff(temp$cola) != 0),]