Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
定义一个.R文件中的所有函数,从另一个.R文件调用它们。如果可能的话,怎么做?_R_File_Scope_Namespaces_User Defined Functions - Fatal编程技术网

定义一个.R文件中的所有函数,从另一个.R文件调用它们。如果可能的话,怎么做?

定义一个.R文件中的所有函数,从另一个.R文件调用它们。如果可能的话,怎么做?,r,file,scope,namespaces,user-defined-functions,R,File,Scope,Namespaces,User Defined Functions,如何在另一个文件(例如xyz.R)中调用abc.R文件中定义的函数 一个补充问题是,如何从R提示符/命令行调用abc.R中定义的函数?您可以调用source(“abc.R”),然后调用source(“xyz.R”)(假设这两个文件都在您当前的工作目录中) 如果abc.R是: fooABC <- function(x) { k <- x+1 return(k) } 即使存在周期性依赖,这也会起作用 例如,如果abc.R是: fooABC <- function(

如何在另一个文件(例如xyz.R)中调用abc.R文件中定义的函数

一个补充问题是,如何从R提示符/命令行调用abc.R中定义的函数?

您可以调用
source(“abc.R”)
,然后调用
source(“xyz.R”)
(假设这两个文件都在您当前的工作目录中)

如果abc.R是:

fooABC <- function(x) {
    k <- x+1
    return(k)
}
即使存在周期性依赖,这也会起作用

例如,如果abc.R是:

fooABC <- function(x) {
    k <- barXYZ(x)+1
    return(k)
}

barABC <- function(x){
    k <- x+30
    return(k)
}
fooXYZ <- function(x) {
    k <- fooABC(x)+1
    return(k)
}

barXYZ <- function(x){
    k <- barABC(x)+20
    return(k)
}

细微差别:你只需要
一次源代码
一个文件/函数。然后它就在你的工作区中,你可以随时使用它。如果你改变了它,你就必须重新源代码。如果你的函数在转换代码后发生了很大的变化,把它们都放在一个文件中,每次都只需源代码。你也可以有一个单独的源代码较小的文件,1.来源较大的函数集合,2.运行您的测试用例。在R中,有很多方法可以安排您的工作流程。感谢您的细微差别,Bryan。我将此演示为两种场景,大多数过程语言的人可能会对此感到好奇。就好像这些文件被编辑以添加循环依赖项一样在这种情况下,他们需要获得资源(如图所示)&周期不会影响文件的来源。谢谢你们两位。@A_K:非常感谢你们突出了周期依赖性问题。为我节省了几个小时的时间翻阅“可以改进”R文档:)退休后我才开始学习R。这太棒了!
fooABC <- function(x) {
    k <- barXYZ(x)+1
    return(k)
}

barABC <- function(x){
    k <- x+30
    return(k)
}
fooXYZ <- function(x) {
    k <- fooABC(x)+1
    return(k)
}

barXYZ <- function(x){
    k <- barABC(x)+20
    return(k)
}
> source("abc.R")
> source("xyz.R")
> fooXYZ(3) 
[1] 55
>