【发布时间】:2017-09-26 03:40:34
【问题描述】:
我正在尝试将相同的连续观察合并到一个折叠的字符串中。一个简单的例子如下:
a <- c("H", "H", "H", "N", "T", "N", "T", "H", "N", "T", "T")
[1] "H" "H" "H" "N" "T" "N" "T" "H" "N" "T" "T"
b <- c("HHH", "N", "T", "N", "T", "H", "N", "TT")
[1] "HHH" "N" "T" "N" "T" "H" "N" "TT"
c <- c("HHH", "HHH", "N", "T", "N", "T", "H", "N", "TT", "TT")
[1] "HHH" "HHH" "N" "T" "N" "T" "H" "N" "TT" "TT"
在这里,我想创建一个函数,它将向量a 转换为向量b 或c。例如,由于前三个观测值都是H,它们一起将变为HHH。与两个T 变成TT 相同。注意我要保持整体顺序,给定元素连续出现的次数不限于3次。因此,例如,可能有 10 个 A 连续出现,它们应该转换为单个 AAAAAAAAAA。
我尝试从for 循环开始逐步建立,但由于连续出现重复次数不受限制的问题,无法进一步构建。我还尝试过使用基本的rle 函数。但是
rle(a)
给出类似的东西
Run Length Encoding
lengths: int [1:8] 3 1 1 1 1 1 1 2
values : chr [1:8] "H" "N" "T" "N" "T" "H" "N" "T"
其中十个元素变成了8个,连续出现的位置不记录。
【问题讨论】:
标签: r