在重复函数调用中分隔参数
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 的答案
对于值向量,我希望每个值都在一个函数上调用
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