我有以下代码。
interleave <- function(v1, v2)
{
ord1 <- 2*(1:length(v1))-1
ord2 <- 2*(1:length(v2))
c(v1,v2)[order(c(ord1,ord2))]
}
widths = c(83, 17, 85, 15, 77, 23, 75, 25, 71, 29, 68, 32, 64, 36, 60,
40, 57, 43, 54, 46, 42, 58)
rep(interleave(1:11,22:12)[i],times=widths[i])
mat.contents=unlist(sapply(1:22,function(i) rep(interleave(1:11,22:12)[i],times=widths[i])))
> table(mat.contents)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
83 85 77 75 71 68 64 60 56 54 42 57 46 43 40 36 32 28 25 23 15 17
5
复制71次但18
这是5对和18对中的另一位数只复制了28次而71 + 28 = / = 100,这应该是因为你可以在widths
中看到,71和29彼此相邻。
可以纠正这种行为吗?
为清楚起见,未列出的矢量格式的对应为:
> 1 22 2 21 3 20 4 19 5 18 6 17 7 16 8 15 9 14 10 13 11 12
相应的宽度:
> 83 17 85 15 77 23 75 25 71 29 68 32 64 36 60 40 57 43 54 46 42 58
答案 0 :(得分:0)
尝试
v1 <- interleave(1:11, 22:12)
table(rep(factor(v1, levels=unique(v1)), widths))
# 1 22 2 21 3 20 4 19 5 18 6 17 7 16 8 15 9 14 10 13 11 12
#83 17 85 15 77 23 75 25 71 29 68 32 64 36 60 40 57 43 54 46 42 58