对于随机生成的100个伯努利试验:
11010101....
答案 0 :(得分:2)
请注意,如果您将前99次随机抽取与最后99次抽签粘贴在一起,那么您将获得所有抽签:
set.seed(144)
trials <- rbinom(100, 1, c(.5, .5))
table(paste0(head(trials, -1), tail(trials, -1)))
# 00 01 10 11
# 21 28 28 22
要获得三位计数,您可以通过粘贴前98个,中间98个和最后98个观察值来扩展它:
table(paste0(head(trials, -2), head(tail(trials, -1), -1), tail(trials, -2)))
# 000 001 010 011 100 101 110 111
# 9 11 14 14 12 16 14 8
关于@FrFlick关于使用embed
的可能性的评论,您可以以矢量化方式生成n个连续位的计数(也称为paste0
一次而不是一次每行):
nbit <- function(dat, n) {
e <- embed(dat, n)
table(do.call(paste0, rev(split(e, col(e)))))
}
nbit(trials, 2)
# 00 01 10 11
# 21 28 28 22
nbit(trials, 3)
# 000 001 010 011 100 101 110 111
# 9 11 14 14 12 16 14 8