R:创建具有特定数量随机数的向量

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

我希望有人能帮我指出正确的方向,在R中创建一个向量,包含一定数量的随机生成的数字。我对R完全是个新手,我已经了解到串联函数用于创建向量。但是,我希望用50个随机数填充向量。我不希望为数字指定范围或任何其他条件

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生成从1base::.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