我有这个数据
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;
...
答案 0 :(得分:1)
执行此操作的一种方法是使用mapply
到rep
向量data
,sample(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)