R:如何在条件下生成序列seq()?

时间:2012-02-18 23:16:41

标签: r random vector

我刚刚发现了R而我正在尝试使用它。

这是我想要实现的目标:

我有一个数字向量x,介于50到100之间,大小为250个。

x = sample(seq(50, 100), 250, repeat = T)

现在,我想生成另一个数字向量y,介于0和100之间,这与向量x的大小相同,因此y中的每个元素都小于或等于x中的等价。

也就是说,如果x [1]是76,例如,当生成的是76时,可以获得最高值y [1]。但它绝对可以是低于76的任何其他值。换句话说,更一般地说,我希望矢量y以y [i]< = x [i]。

的方式生成。

我希望我的要求更清楚。

非常感谢!

1 个答案:

答案 0 :(得分:5)

y <- x -1 # ...........................

 y <- sapply( x, function(x) runif(n=1, max=x))
 y
 [1]  7.2713788 30.0008063 42.5205775  0.9271717 10.7114456 39.5199145  7.4109775
 [8] 28.3464373 28.5840101 34.0654033 15.0675028 50.2836294 45.9031794 13.5931005
[15] 43.2751738 17.0560824  3.1507491 25.7619129 12.3391448 22.6203684 51.3334810
[22] 37.0481703 33.4733277 37.1304850 26.7984406 66.3844126 40.2775918 47.6379024
[29] 16.2480595 66.8358384 33.3513161 60.2673874 65.6204462 45.6951960  1.5729434
[36] 20.4850357  0.1345737 84.5334203 19.7997451 53.8025623 48.5528486  8.8992123
[43] 90.9651742 28.3584167 41.7728159 46.4790641 17.8129578 83.1906415 37.5114353
[50] 89.5685501 85.2499600