向量中重复出现的实例的R计数

向量中重复出现的实例的R计数,r,R,我正在寻找一种有效的方法来转换向量v需要rle和paste0,但首先是代码中的一个示例: v <- scan(text= "a,a,a,b,a,b,b,c,b", sep=",", what="") #Read 9 items v [1] "a" "a" "a" "b" "a" "b" "b" "c" "b" rle(v) #Run Length Encoding # lengths: int [1:6] 3 1 1 2 1 1 # values : chr [1:6] "a" "

我正在寻找一种有效的方法来转换向量
v需要rle和paste0,但首先是代码中的一个示例:

v <- scan(text= "a,a,a,b,a,b,b,c,b", sep=",", what="")
#Read 9 items
 v
[1] "a" "a" "a" "b" "a" "b" "b" "c" "b"
 rle(v)
#Run Length Encoding
#  lengths: int [1:6] 3 1 1 2 1 1
#  values : chr [1:6] "a" "b" "a" "b" "c" "b"
 paste0( rle(v)$values, rle(v)$lengths)
##
[1] "a3" "b1" "a1" "b2" "c1" "b1"
v您正在描述的

R以
base::rle

要创建单个字符串,可以对
rle
提供的两个结果进行行绑定(
长度
),并将它们折叠在一起:


粘贴(rbind(rle(v)$值,rle(v)$长度),collapse=“”)
一个选项可以使用
dplyr::lag
生成输出:

#Data
v <- c("a","a","a","b","a","b","b","c","b")
sapply(split(v, cumsum(v!=dplyr::lag(v, default = " "))),
       function(x)paste0(x[1],length(x))) %>% as.vector()
#Result
#[1] "a3" "b1" "a1" "b2" "c1" "b1"
#数据
v%as.vector()
#结果
#[1] “a3”“b1”“a1”“b2”“c1”“b1”

您正在描述的
rle
功能也可以执行
Reduce(粘贴0,rev(rle(v))
是的。可以删除版本并使用
[2:1]