Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中的for循环中按行绑定数据帧_R_For Loop_Lapply_Do.call - Fatal编程技术网

在R中的for循环中按行绑定数据帧

在R中的for循环中按行绑定数据帧,r,for-loop,lapply,do.call,R,For Loop,Lapply,Do.call,我想进行蒙特卡罗模拟,平均值(I)从5到60,间隔为5,j从0到1,间隔为0.125。作为以下代码的输出,我希望为每个j获得的数据帧沿行绑定。例如,如果我想对给定的j执行10000次模拟,则生成的数据帧(即DF1)将有12列和10000行,其中12表示I的长度(即60/50。随后,每个j的DF1应按行绑定。因此,对于最终数据帧的8个j值,DF2将有80000行和12列。但是,在运行此代码时,我收到以下错误消息:“数据列表中的错误[[j]]有一种简单得多的方法可以做到这一点。首先,您可能并不真正想

我想进行蒙特卡罗模拟,平均值(I)从5到60,间隔为5,j从0到1,间隔为0.125。作为以下代码的输出,我希望为每个j获得的数据帧沿行绑定。例如,如果我想对给定的j执行10000次模拟,则生成的数据帧(即DF1)将有12列和10000行,其中12表示I的长度(即60/50。随后,每个j的DF1应按行绑定。因此,对于最终数据帧的8个j值,DF2将有80000行和12列。但是,在运行此代码时,我收到以下错误消息:“数据列表中的错误[[j]]有一种简单得多的方法可以做到这一点。首先,您可能并不真正想要
j=0
,因为这会使标准偏差为零,并且所有值都是常量,但我将保留您设置的参数:

ivals <- seq(5, 60, 5)
jvals <- seq(0, 1, 0.125)
n <- 10                      # Just 10 values for testing
ijval <- expand.grid(ival=ivals, jval=jvals)  # 108 combinations of i and j
draw <- function(i, j, n) {rlnorm(n, log(i^2 / sqrt((i*j)^2 + i^2)), sqrt(log(1 + ((i*j)^2 / i^2))))}
DF <- t(mapply(draw, i=ijval$ival, j=ijval$jval, n=n))   # 108 rows by n columns

ivals因此在循环的第一次迭代中
j
0
。您试图将循环基于序列
seq(0,1,0.125)
而不是整数序列,因此不能基于
j
进行子集。
ivals <- seq(5, 60, 5)
jvals <- seq(0, 1, 0.125)
n <- 10                      # Just 10 values for testing
ijval <- expand.grid(ival=ivals, jval=jvals)  # 108 combinations of i and j
draw <- function(i, j, n) {rlnorm(n, log(i^2 / sqrt((i*j)^2 + i^2)), sqrt(log(1 + ((i*j)^2 / i^2))))}
DF <- t(mapply(draw, i=ijval$ival, j=ijval$jval, n=n))   # 108 rows by n columns