【发布时间】:2017-03-15 01:00:01
【问题描述】:
我正在尝试创建一个逻辑向量来检查一个元素是否等于前一个元素。
vector <- c(1, 1, 2, 2, 2, 3, 3)
我想检查每个元素是否等于前一个,因此结果应该是:
FALSE TRUE FALSE TRUE TRUE FALSE TRUE
我知道我可以创建一个循环,但它效率不高(我有 1600 万行 df)。 所以
这不是理想的,但我可以做到:
for(i in 2:length(vector)) {print(vector[i] == vector[i-1])}
这将永远持续下去。有没有矢量化的方式来做到这一点?
【问题讨论】:
-
或
c(FALSE, head(vector, -1) == tail(vector, -1)) -
您也可以:
c(FALSE,vector[-1]==vector[-length(vector)]). -
那行得通,只需要一个适应
c(FALSE, !diff(x) >0)或者它返回相反。知道如何对字符向量执行此操作吗?
标签: r loops vector vectorization