【问题标题】:How can I define a global variable (text) in R如何在 R 中定义全局变量(文本)
【发布时间】:2011-06-13 12:34:43
【问题描述】:

我想开发一个变量作为函数中的参数,比如

W<-"Hi I am working on R"  #W is the variable, it is the text file

我要开发的函数就像getText=function(W){}这个函数get调用另一个脚本。

那么 W 可以作为全局变量在脚本中的任何地方出现 W 可以显示"Hi I am working on R"

【问题讨论】:

  • ?source 你在找什么?您可以在给定文件中定义 W,然后在您的其他脚本中包含 source("scriptThatContainsW.R")。或者-您可以在Rprofile 页面中定义W,以便它始终可用..
  • 您可以使用assign(..., pos = globalenv()) 将具有相应值的变量分配给可从“无处不在”访问的全局环境。
  • 这个assign(..., pos = globalenv()) 有效,我试过了!

标签: r variables


【解决方案1】:

我认为您应该能够通过使用以下语法来实现这一点:

W<<-"Hi I am working on R"

使用

【讨论】:

    【解决方案2】:

    实现这一目标有多种可能性,具体取决于您想走多远。最简单的方法是在全局环境中分配变量 W,然后从那里调用其他脚本。不过,这确实违背了函数的目的。

    最直接的解决方案是在source 调用中使用选项local=TRUE。这允许源脚本在函数的本地环境中进行搜索。

    插图:给定一个文件 Myscript.r :

    cat("In script : ",x," ",W,"\n")
    
    afunc <- function(y){
      cat("within function : ",y," ",W,"\n")
    }
    afunc(x)
    

    您可以定义一个在本地获取它的函数:

    mynewfunc <- function(x){
        W <- "My W"
        source("Myscript.R",local=TRUE)
    }
    
    avar <- "Working in R"
    mynewfunc(avar)
    

    然后做它需要做的事情:找到从全局环境传递给mynewfuncx,并找到分配在mynewfunc的本地环境中的W

    In script :  Working in R   My W 
    within function : Working in R   My W 
    

    最强大的选择是在一个包中执行此操作。基本上,您在包的源文件之一中声明它们。常量 W 将被加载并可供该包中的所有函数使用。如果您使用命名空间,您可以决定是要导出常量,还是将其隐藏以便只能由您自己的函数访问。有关这方面的更多信息,您可以在“编写 R 扩展”中找到。

    在函数中获取脚本文件是处理不同函数的一种不太可靠的方法。您可能会得到非常意想不到的结果,具体取决于工作区中的变量。如果你想试试这个,我绝对建议你开始研究构建自己的包。如果不涉及 C 代码,这非常简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-19
      • 2018-01-27
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 2011-08-20
      相关资源
      最近更新 更多