假设我有矢量a:
c(1, 6, 2, 4.1, 1, 2)
Run Code Online (Sandbox Code Playgroud)
和计数向量b:
c(2,3,2,1,1,0)
Run Code Online (Sandbox Code Playgroud)
我想生成矢量c:
c(1, 1, 6, 6, 6, 2, 2, 4.1, 1)
Run Code Online (Sandbox Code Playgroud)
致电:
hist(c)
Run Code Online (Sandbox Code Playgroud)
我如何构建c,或者是否有直接从a和生成直方图的方法b?请注意重复内容a以及不等间距.
需要矢量化解决方案.a并且b对于lapply和朋友来说太大了.
Jus*_*tin 10
?rep
> rep(a, b)
[1] 1.0 1.0 6.0 6.0 6.0 2.0 2.0 4.1 1.0
>
Run Code Online (Sandbox Code Playgroud)
编辑,因为我很好奇!
a <- sample(1:10, 1e6, replace=TRUE)
b <- sample(1:10, 1e6, replace=TRUE)
> system.time(rep(a, b))
user system elapsed
0.140 0.016 0.156
> system.time(inverse.rle(list(lengths=b, values=a)))
user system elapsed
0.024 0.004 0.028
Run Code Online (Sandbox Code Playgroud)
只是为了不同的东西rep:
> inverse.rle(list(lengths=b,values=a))
[1] 1.0 1.0 6.0 6.0 6.0 2.0 2.0 4.1 1.0
Run Code Online (Sandbox Code Playgroud)