我有一个 list :

x <- c("1", "2", "2", "3", "3", "3", "2", "2", "3", "3", "3","2", "2", "2", "2") 

我需要做的是把它们缩短成这样.

1 2 3 2 3 2 2

这是因为在1之后,2出现2次,然后3出现3次,然后2出现2次,依此类推.这是固定不变的.


Notice预期输出结束时的最后两个2.另一个说明预期输出的示例:

input:  3,3,3,3,3,3,2,2,2,2,2,2
output: 3,3,2,2,2

推荐答案

可以使用rle(),并根据其长度与值的比率重复每个值.

with(rle(x), rep(values, lengths / as.numeric(values)))

# [1] "1" "2" "3" "2" "3" "2" "2"

R相关问答推荐

为什么以及如何修复Mapview不显示所有点并且st_buffer合并一些区域R?

如何使用geom_sf在边界显示两种 colored颜色 ?

R形式的一维数字线/箱形图样式图表

计算R中的威布尔分布的EDF

r替换lme S4对象的字符串的一部分

在R中使用数据集名称

如何在R中合并两个基准点?

在R中使用download. file().奇怪的URL?

根据文本字符串中的值粘贴新列

使用整齐的计算(curl -curl )和杂音

在不丢失空值的情况下取消列出嵌套列表

过滤名称以特定字符串开头的文件

将标识符赋给事件序列,避免错误观察

在gggraph中显示来自不同数据帧的单个值

使用gt_summary是否有一种方法来限制每个变量集进行配对比较?

TidyVerse中长度不等的列结合向量

如何调整一个facet_work()面板内的框图和移动标签之间的水平宽度?

Data.table::Shift type=允许扩展数据(&Q;LAG&Q;)

排序R矩阵的行和列

在子图内和子图之间对齐行数不均匀的表格罗布对