在R列表中select随机元素?

a<-c(1,2,0,7,5) 

有些语言具有select器function – 从R中如何select一个随机数?

 # Sample from the vector 'a' 1 element. sample(a, 1) 

上面的答案在技术上是正确的:

 sample(a,1) 

然而,如果你想重复这个过程很多次,假设你想模仿掷骰子,那么你需要添加:

 a<-c(1,2,3,4,5,6) sample(a, 12, replace=TRUE) 

希望能帮助到你。

使用样品时要小心!

sample(a, 1)在您的示例中对于vector非常有用,但是当vector长度为1时,可能会导致不希望的行为,则将使用vector1:a进行采样。

所以如果你试图从不同长度的vector中select一个随机项目,检查长度为1的情况!

 sampleWithoutSurprises <- function(x) { if (length(x) <= 1) { return(x) } else { return(sample(x,1)) } } 

阅读这篇关于在R中生成随机数的文章。

http://blog.revolutionanalytics.com/2009/02/how-to-choose-a-random-number-in-r.html

你可以在这种情况下使用sample

 sample(a, 1) 

第二个属性显示你只想得到一个随机数。 若要生成一些范围之间的runif函数是有用的。

另一种方法是使用runif从vector中select一个项目。 即

 a <- c(1,2,0,7,5) a[runif(1,1,6)] 

比方说,你想要一个函数,每次运行时select一个(例如在模拟中有用)。 所以

 a <- c(1,2,0,7,5) sample_fun_a <- function() sample(a, 1) runif_fun_a <- function() a[runif(1,1,6)] microbenchmark::microbenchmark(sample_fun_a(), runif_fun_a(), times = 100000L) 

单位:纳秒

sample_fun_a() – 4665

runif_fun_a() – 1400

runif似乎在这个例子中更快。