R:根据数据计数生成直方图

Cla*_*ley 6 r

假设我有矢量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)


the*_*ail 5

只是为了不同的东西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)