-1

我有一个由多个函数组成的脚本。我的脚本的一个总结示例如下所示

>Test.R   
massive.process_1 <- function() {
  seed(123)
  x <- do_something()
  save(x, '/home/Result1.RData')      
}

massive.process_2 <- function() {
  seed(4)
  x <- do_something()
  save(x, '/home/Result2.RData')      
} 

massive.process_1()
massive.process_2()

我必须执行这个脚本,但不是 2 个 _massive.processs_我需要运行 100 个,但要更改seed每个步骤中保存的数据的值和名称。我可以手动添加 100 个mass.process函数,但我想知道是否有任何方法可以将其放在脚本中以避免输入 100 个函数?

非常感谢

我运行它的 bash 文件如下:

#!/bin/bash
echo Started analysis at: `date`
rfile="Test.R"
Rscript $rfile
echo Finished analysis at: `date`
4

2 回答 2

1

添加到丹尼斯的答案......

要更改文件名,您可以使用“粘贴”。

massive.process <- function(i) {
  seed(i)
  x <- do_something()
  outname = paste("/home/Result", i, ".RData", sep="")
  save(x, outname)
  x
}


for (i in 1:100){
    massive.process(i); 
}

或者

X = lapply(1:100, massive.process)

如果您使用列表方法,要访问第 i 个 x,只需使用 X[i]

编写 lapply 循环的另一种方法是使用匿名函数。这可能更清楚发生了什么。

X = lapply(1:100, function(i){
  massive.process(i)
})

前面的符号是一样的,只是更紧凑。

于 2013-07-17T17:08:59.837 回答
0

为什么不将种子作为参数添加到函数中?

massive.process <- function(seedValue) {...}

在 R 中实现循环而不是使用 shell 脚本可能是个好主意。

于 2013-07-17T16:21:42.273 回答