热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

如何将向量中的值与r之前和之后的值进行匹配?

如何解决《如何将向量中的值与r之前和之后的值进行匹配?》经验,为你挑选了2个好方法。

我试图根据矢量中焦点值之前或之后的一个元素值来识别不匹配的值.有什么想过怎么办?

让我们说,我有一个向量:x<-c(1,1,2,1,3,3).如果element[i]与item i(element[i-1]element[i+1])之前或之后的元素匹配.如果匹配element[i]应该等于"是",否则它应该等于"否".

预期的输出x<-c(1,1,2,1,3,3)应该是c("yes","yes","no","no","yes","yes").



1> Darren Tsai..:

使用rle()来识别相等值的运行.rle(x)$length == 1表示当前值之前或之后没有相等的值.

rep(ifelse((len <- rle(x)$lengths) == 1, "no", "yes"), len)
# [1] "yes" "yes" "no"  "no"  "yes" "yes"

编辑:更简洁的版本(感谢@ dww的评论)

rep((len <- rle(x)$lengths) == 1, len)
# [1] FALSE FALSE  TRUE  TRUE FALSE FALSE


或者更简洁`rep((l <- rle(x)$ l)== 1,l)`

2> G5W..:

这是一个用于此的衬垫 diff

c(diff(x) == 0, F) | c(F, diff(x) == 0)
[1]  TRUE  TRUE FALSE FALSE  TRUE  TRUE

c(diff(x) == 0, F)对于每个索引,元素[i] ==元素[i + 1](不适用于最后一个元素)c(F, diff(x) == 0)将为true,对于每个具有元素[i] ==元素[i-1]的索引都为true(不适用于第一个元素)


推荐阅读
author-avatar
总是生活在记忆中_873
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有