替换R中的重复字符串

时间:2016-02-11 03:29:16

标签: r string

我有一个看起来像

的列
v1 <- c("A","A","A", "B","B","A","A")

我想删除每个重复的字母,直到下一个不同的字符串,所以结构将是

 c("A", "","","B", "", "A","")

有关如何在R中执行此操作的任何提示

由于

1 个答案:

答案 0 :(得分:-1)

我们可以使用rleid中的游程长度类型函数(dat.table)来创建基于重复值的分组索引,应用duplicated来获取逻辑向量(TRUE)对于重复元素),将向量子集化并将这些重复项转换为''

library(data.table)
v1[duplicated(rleid(v1))] <- ''
v1
#[1] "A" ""  ""  "B" ""  "A" "" 

或者我们使用base R方法通过删除第一个和最后一个元素(v1[-1]v1[-length(v1)])来比较相邻元素。输出的长度比原始矢量小1。因此与FALSE连接以使长度相等,将向量子集化并将这些元素更改为''

v1[c(FALSE, v1[-1]== v1[-length(v1)])] <- ''

数据

 v1 <- c("A","A","A", "B","B","A","A")