基于区间范围中的随机值重复每个向量的值

时间:2017-10-11 12:32:01

标签: r

我有这个数据

 data <- c("h", "H", "homme", "masculin", "f")

我想根据区间范围内的随机值重复每个值

我的所作所为:

 dummy <- rep(data, ceiling(runif (1, 1, 3)))
 sort(dummy)

我的结果:

"f"        "f"        "h"        "h"        "H"        "H"        "homme"    "homme"    "masculin" "masculin"

我的期望:每个值可以在一个范围内随机重复

我可以期待:2&#34; f&#34;,3&#34; homme&#34;,1&#34; masculin&#34;

我可以期待1&#34; f&#34;,1&#34; homme&#34;,3&#34; masculin&#34;
...

2 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用mapplyrep向量datasample(3, 3)次。

注意它会给你警告

  

警告讯息:   在mapply(rep,data,sample(3,3)):

     

较长的参数不是较短的长度的倍数

但是,它不应该担心你,因为它将回收sample向量,在这种情况下,所有再循环值将再次在你预定义的范围内,从而满足你的条件,即

unname(unlist(mapply(rep, data, sample(3, 3))))
#[1] "h"        "H"        "H"        "H"        "homme"    "homme"    "masculin" "f"        "f"        "f"       

 unname(unlist(mapply(rep, data, sample(3, 3))))
#[1] "h"        "H"        "H"        "homme"    "homme"    "homme"    "masculin" "f"        "f"       

unname(unlist(mapply(rep, data, sample(3, 3))))
#[1] "h"        "h"        "H"        "H"        "H"        "homme"    "masculin" "masculin" "f"        "f"        "f" 

答案 1 :(得分:1)

另一种方法......

   reptime <- sapply(1:length(data),function(x) 
    x <- ceiling(runif(1, 0, 3)) ); 

    dummy <- rep(data , reptime ); 

    sort(dummy)