2

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

test <- c("vv","vv","vv","bb","bb","bb","","cc","cc","vv","vv")

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

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

我查看了 rle 函数,这似乎很好,但是如何将 rle 的输出作为向量?我似乎不明白 rle 类...

> rle(test)
Run Length Encoding
  lengths: int [1:5] 3 3 1 2 2
  values : chr [1:5] "vv" "bb" "" "cc" "vv"

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

再次感谢任何帮助 !

4

2 回答 2

2

rle()返回 class 的二元素列表"rle";正如@gsk 指出的那样,您可以使用普通的列表索引结构来访问分量向量。

另外,试试这个,把结果rle变成更熟悉的格式:

as.data.frame(rev(unclass(rle(test))))
#   values lengths
# 1     vv       3
# 2     bb       3
# 3              1
# 4     cc       2
# 5     vv       2
于 2012-06-16T18:47:21.503 回答
2

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

解决方案:rle(test)$values

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

于 2012-06-16T18:52:25.690 回答