R:创建具有特定数量随机数的向量
我希望有人能帮我指出正确的方向,在R中创建一个向量,包含一定数量的随机生成的数字。我对R完全是个新手,我已经了解到串联函数用于创建向量。但是,我希望用50个随机数填充向量。我不希望为数字指定范围或任何其他条件R:创建具有特定数量随机数的向量,r,vector,R,Vector,我希望有人能帮我指出正确的方向,在R中创建一个向量,包含一定数量的随机生成的数字。我对R完全是个新手,我已经了解到串联函数用于创建向量。但是,我希望用50个随机数填充向量。我不希望为数字指定范围或任何其他条件 MyVectorObject <- c(...) MyVectorObject它取决于要生成的数字。这些是一些选择 x1 <- rpois(n = 50, lambda = 10) x2 <- runif(n = 50, min = 1, max = 10) x3 &l
MyVectorObject <- c(...)
MyVectorObject它取决于要生成的数字。这些是一些选择
x1 <- rpois(n = 50, lambda = 10)
x2 <- runif(n = 50, min = 1, max = 10)
x3 <- sample(x = c(1, 3, 5), size = 50, replace = TRUE)
x1如果我们讨论的是整数,您希望在区间中生成数字,例如在我的计算机上区间
实施
您可以使用base::sample生成从1到base::.Machine$integer.max的正数
random.pos <- function(N) {
int.max <- .Machine$integer.max
return(sample(int.max, N, replace=TRUE))
}
random.posneg <- function(N) {
int.max <- .Machine$integer.max
random.numbers <- sample(int.max, N, replace = TRUE)
random.signs <- sample(c(1,-1), N, replace=TRUE)
return(random.numbers * random.signs)
}
random.runif <- function(N) {
int.max <- .Machine$integer.max
int.min <- -int.max
return(as.integer(runif(N, int.min, int.max)))
}
library(microbenchmark)
require(compiler)
random.runif <- cmpfun(random.runif)
random.pos <- cmpfun(random.pos)
random.posneg <- cmpfun(random.posneg)
N <- 500
op <- microbenchmark(
RUNIF = random.runif(N),
POS = random.pos(N),
POSNEG = random.posneg(N),
times = 10000
)
print(op)
## library(ggplot2)
## boxplot(op)
## qplot(y=time, data=op, colour=expr) + scale_y_log10()
Unit: microseconds
expr min lq mean median uq max neval
RUNIF 13.423 14.251 15.197122 14.482 14.694 2425.290 10000
POS 4.174 5.043 5.613292 5.317 5.645 2436.909 10000
POSNEG 11.673 12.845 13.383194 13.285 13.800 60.304 10000