【发布时间】:2023-01-30 00:51:23
【问题描述】:
我有以下功能:
fn <- function()
{ i = 1:100
v1 = rnorm(100,100,100)
v2 = rnorm(100,100,100)
out = data.frame(i, v1,v2)
return(out)
}
我的问题:我想使用 R 中的 replicate() 函数来运行此函数 100 次,并将所有 100 次运行的输出合并为一个输出(即 3 列,100x100 = 10000 行):
output = replicate(100, fn())
当我这样做时,数据以其他格式出现:
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
i integer,100 integer,100 integer,100 integer,100 integer,100 integer,100 integer,100
v1 numeric,100 numeric,100 numeric,100 numeric,100 numeric,100 numeric,100 numeric,100
v2 numeric,100 numeric,100 numeric,100 numeric,100 numeric,100 numeric,100 numeric,100
我知道我可以使用 FOR 循环执行完全相同的任务 - 但有什么方法可以使用 replicate() 函数执行此操作吗?
实际上,我有一个非常大的函数,我不想用“i”和“j”索引修改 - 我想也许我可以将 replicate() 放入循环本身?
my_list = list()
for ( i in 1:100)
{
out_i = replicate(fn(),1)
out_i$round = i
my_list[i] = out_i
}
final <- do.call(rbind.data.frame, my_list)
但是我不确定该怎么做-有人可以告诉我该怎么做吗?
谢谢!
注意:这是正确的吗?
my_list <- lapply(1:100, 函数(i) {
out_i <- my_function() 函数
out_i$round <- i out_i })
最后 <- do.call(rbind, my_list)
【问题讨论】:
标签: r