我想將相同的連續觀察值合併到摺疊的字符串中。一個簡單的例子如下所示:合併/摺疊向量中的相同連續元素
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
's,它們一起將變爲HHH
。與兩個T
變成TT
一樣。請注意,我想保留整體順序,並且給定元素以連續方式出現的次數不限於三次。因此,例如,可能有連續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,而不是記錄連續出現的位置。
哇 - 這是快!非常感謝! –