R:执行脚本n次的函数,仅打印最后一个请求

时间:2017-05-03 12:46:58

标签: r list simulation apply

几个月前,我正在搜索并找到一个可以执行以下操作的函数: 从脚本A,它可以执行脚本B n次。因此,它将创建一个包含n个元素的列表,并且每个列表元素将仅包含脚本B的最后请求的对象。例如,如果脚本B的最后一行包含由某些数据的平均值组成的向量,则列表只包含该向量。 我似乎无法再找到这个功能了。

这是我需要做的: 我的脚本B包含对模拟数据执行的模拟和计算。结果,脚本打印矩阵。我想重新执行这个脚本n次,产生一个包含n个元素的列表,每个元素都包含一个结果矩阵。

奖励将能够改变脚本B中的种子 - 即包含使用set.seed(1)模拟的数据的列表[[1]]。

我知道这个问题需要来自apply系列的函数 - 在下面的例子中,source()不被接受为函数。

listsmalln <- lapply(n, source("Small samples/scriptB.R"))

希望这是可以理解的!提前致谢!

2 个答案:

答案 0 :(得分:0)

我认为你应该使用:

lapply(1:n, function(x) source("test.R"))

更改种子的最简单方法是使用带有种子的输入参数从脚本创建一个函数。

答案 1 :(得分:-1)

如果您的脚本B可以是一个返回矩阵的函数,那么它很简单:

脚本B :(作为functionB.R):

functionB <-  function(x){

  set.seed(x)

  return matrix(runif(100),ncol=10)

}

脚本A:

source('functionB.R')

lapply(1:10,function(x) functionB(x))