R中向量的重复模式

1bqhqjot  于 2023-02-06  发布在  其他
关注(0)|答案(3)|浏览(152)

如果一个向量是由一个长度未知且元素唯一的向量通过重复未知次而产生的
small_v <- c("as","d2","GI","Worm")
big_v <- rep(small_v, 3)
那么如何确定这个向量有多长,重复了多少次
所以在这个例子中,原始长度是4,它重复了3次。
实际上,在我的例子中,向量将相当小,并且只会重复几次。

laawzig2

laawzig21#

**1)**假设small_v中至少有一个唯一元素(问题中就是这种情况,因为它假设small_v中的所有元素都是唯一的):

min(table(big_v))
## [1] 3

或使用管道

big_v |> table() |> min()
## [1] 3

下面是一个更困难的测试,但它仍然有效,因为small_v2[2]small_v2中是唯一的,即使small_v2的其他元素不是唯一的。

# test data
small_v2 <- c(small_v, small_v[-2])
big_v2 <- rep(small_v2, 3)

min(table(big_v2))
## [1] 3

**2)**如果我们知道small_v的第一个元素是唯一的(这是问题中的情况,因为它假设small_v中的所有元素都是唯一的),那么这将起作用:

sum(big_v[1] == big_v)
## [1] 3
alen0pnh

alen0pnh2#

**1)**如果元素都是重复的,并且没有其他值,则使用

length(big_v)/length(unique(big_v))
[1] 3

**2)**或使用

library(data.table)
max(rowid(big_v))
[1] 3
hm2xizp9

hm2xizp93#

或者,我们可以使用rlewith来计算重复次数

with(rle(sort(big_v)), max(lengths))

创建于2023年2月4日,使用reprex v2.0.2

[1] 3

相关问题