在R中重复一个函数并将值传递给矩阵

时间:2015-08-18 08:16:29

标签: r matrix repeat

我正在使用sde包中的内置函数:

set.seed(123)
X <- sde.sim(model="OU", theta=c(3,1,2), N=10000, delta=1)

我希望重复相同的功能1000次而不更改任何参数,每次它都会给出一个时间序列作为输出。我想将它传递给矩阵。

任何人都可以帮助我使用repeat命令,因为它与你有约束的正常重复不同。

2 个答案:

答案 0 :(得分:1)

根据我的理解,我会选择一个简单的for循环

mat <- matrix(,1000,10001)
for (x in 1:1000) { mat[x,] <- sde.sim(model="OU", theta=c(3,1,2), N=10000, delta=1) }

@DavidArenburg的另一个选择评论:

mat <- matrix(sde.sim(model="OU", theta=c(3,1,2), N=(1e7 -1), delta=1),nrow=1e3,ncol=1e4)

我们必须将N设置为按行减去1以在结尾处获得可分的值(因此每行将精确地为10 000个值,而不是与for循环中的10 001。

警告与for循环不同,此处每行不会以1开头,只有第一个条目为1。

答案 1 :(得分:0)

您可以使用replicate运行该功能1000次,并使用cbind将生成的时间序列组合成矩阵。

result = do.call( cbind, replicate(1000, sde.sim(model="OU", theta=c(3,1,2), N=10000, delta=1), simplify=FALSE ) )