在重复函数调用中分隔参数

Separating Parameters in Repeated Function Calls

对于值向量,我希望每个值都在一个函数上调用

values = 1:10
rnorm(100, mean=values, sd=1)

mean = 值重复序列 (1,2,3,4,5,6,7,8,9,10)。我怎样才能得到一个矩阵,每个矩阵都有 100 个观测值并使用我的向量中的单个元素? 即:

rnorm(100, mean=1, sd=1)
rnorm(100, mean=2, sd=1)
rnorm(100, mean=3, sd=1)
rnorm(100, mean=4, sd=1)
# ...

使用 map 我可以为向量 values[ 中的每个值应用一个函数=11=]

library(purrr)

values = 1:10
map_dfc(
  .x = values,
  .f = ~rnorm(100,mean = .x,sd = 1)
  )

在这种情况下,我将有一个 data.frame 100x10

一个选项是 lapply 来自 base R

lapply(1:10, function(i) rnorm(100, mean = i, sd = 1))

Map 来自基数 R:

Map(function(i) rnorm(100, mean = i, sd = 1), 1:10)

从你的问题中看不出来,但我认为你想要一个 10 行 100 列的单一矩阵。既然如此你可以这样做:

matrix(rnorm(1000, rep(1:10, each = 100)), nrow = 10, byrow = TRUE)

或使用 sapply 代替 lapply

修改 akrun 的答案