0

我有一个标准的数据分析程序,需要在各种(约 50 个数据集)上运行。我已经开发了一段时间,现在我想把它变成一个函数,它接受一个数据集并为每个数据集吐出一些合理的表。但是,完成的过程跨越了四个脚本文件,到目前为止,我已经source从一个到另一个运行它,但似乎不可能使用function.

我有以下问题:

foo <- function(data) {
  a <- somevariable
  source("..somefile..") #The code in there uses a, but a is not in the workspace...
  ..
  continue
  ..
}

当您在数据集上运行代码时,它会崩溃。

是否有某种方式(命令)可以在编译时从其他文件中复制粘贴命令(不知道如何以不同的方式调用它,即使它不是真正的编译)函数?我知道我可以自己复制粘贴它,但我不想这样做,因为各种步骤包括神经网络和 ARFIMA 估计,为了代码的可读性,我想将它们保存在单独的文件中。无论如何,复制粘贴后的功能将类似于 200 行代码,这绝对不是用户友好的......

谢谢

4

3 回答 3

1

我建议从一个最小的示例开始,以便您了解编写函数需要什么,如何使用 source() 将函数加载到 R 中,如何使用参数以及如何调用函数。在这样做之后,希望下一步去哪里会更加明显。

要回答您的问题,如果您的脚本包含 200 行代码并且只执行一件事(即它执行一个 FUNCTION),那么您应该考虑将其包装到一个函数中,是的。这实际上会增加而不是降低用户友好性,因为您的脚本现在只能包含一行(函数调用),而不是原来的 200 行代码。

于 2013-02-20T14:39:18.260 回答
0

我猜在这里,但像这样:

myfunc <- function() {
if (something) source("path to script")
} else {
if (another thing) source("path to another script")
}
Do calcs and return the result
}

或者脚本的路径可以是函数参数。

于 2013-02-20T14:59:55.403 回答
0

我理解你的问题,我假设你想使用函数在函数中使用 proc source,所以你只需要添加参数local = T

例子

#This is your source code
y<-x+1
#save in your favorite path as "your_path.R"

#Function where you will call the above code
your_function<-function(x){
source("your_path.R",local=T) #plus 1 to x. IMPORTANT: local=T
return(y)
}
于 2018-05-16T10:34:28.627 回答