首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提取R中的连续事件(如unix uniq)

提取R中的连续事件(如unix uniq)
EN

Stack Overflow用户
提问于 2012-06-17 02:39:52
回答 2查看 331关注 0票数 2

我开始为我的论文分析数据。我首先需要将连续出现的字符串算作一个字符串。下面是一个示例向量:

代码语言:javascript
运行
复制
test <- c("vv","vv","vv","bb","bb","bb","","cc","cc","vv","vv")

我想简单地提取唯一值,就像在unix命令uniq中一样。因此,预期输出将是一个向量,如下所示:

"vv","bb","cc","vv“

我看了看rle函数,这似乎很好,但是我如何才能将rle的输出作为向量?我好像不太理解rle类...

代码语言:javascript
运行
复制
> rle(test)
Run Length Encoding
  lengths: int [1:5] 3 3 1 2 2
  values : chr [1:5] "vv" "bb" "" "cc" "vv"

如何获得rle输出值的一个向量和长度的另一个向量?希望我说得够清楚了。

再次感谢您的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-17 02:47:22

rle()返回"rle"类的两个元素的列表;正如@gsk所指出的,您可以使用普通的列表索引构造来访问组件向量。

另外,尝试这样做,将rle的结果转换为更熟悉的格式:

代码语言:javascript
运行
复制
as.data.frame(rev(unclass(rle(test))))
#   values lengths
# 1     vv       3
# 2     bb       3
# 3              1
# 4     cc       2
# 5     vv       2
票数 2
EN

Stack Overflow用户

发布于 2012-06-17 02:52:26

来源:http://www.sigmafield.org/2009/09/22/r-function-of-the-day-rle

解决方案:rle(test)$values

他们使用:coin.rle <- rle(coin)coin.rle$values所以,rle(test)$values应该可以工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11066080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档