在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似乎在这个例子中更快。