设置所有函数用于将文件保存到R的全局路径变量

设置所有函数用于将文件保存到R的全局路径变量,r,file,output,rscript,R,File,Output,Rscript,我有一个简单的问题,我找不到简单的解决办法。我将R用于数据分析管道,我希望将输出路径设置为全局变量。然后,各种函数都应使用此选项保存表格和绘图。我希望避免将这个path变量传递给每个函数。因此,我所做的是: outpath <- "../results/" function1 <- function(){ ... # analysis write.table(result, file = paste0(outpath,"/function1results.xls"))

我有一个简单的问题,我找不到简单的解决办法。我将R用于数据分析管道,我希望将输出路径设置为全局变量。然后,各种函数都应使用此选项保存表格和绘图。我希望避免将这个path变量传递给每个函数。因此,我所做的是:

outpath <- "../results/"
function1 <- function(){
    ... # analysis
    write.table(result, file = paste0(outpath,"/function1results.xls"))
    }

outpath将输出路径放入函数中

outpath <- "../results/"

function1 <- function(out){
    ... # analysis
    write.table(result, file = paste0(out,"/function1results.xls")
}

function1(outpath)

outpath将输出路径放入函数中

outpath <- "../results/"

function1 <- function(out){
    ... # analysis
    write.table(result, file = paste0(out,"/function1results.xls")
}

function1(outpath)

outpath相对路径会导致灾难,尤其是当R脚本不是从所有系统上完全相同的位置运行时

如果您确定-100%确定-此脚本将始终从一致的位置运行,那么您可以放置:

outpath_prefix <- "../results/"
阅读该函数的帮助页(
?file.path
),特别是针对此gem:

该实现被设计为快速(比粘贴更快),因为该函数在R本身中被广泛使用

然而

考虑使用“项目”概念,并在此处安装
软件包

使用适当的“项目”(即RStudio定义的标准),在项目根目录中放置“
项目名称.Rproj
”,或者在项目根目录中创建其中一个文件(它们可以为空):

- `.here` 
- `.projectile`
或者对项目使用版本控制(这总是一个好主意),并确保
.git
文件位于项目的根目录中

然后你可以做:

outpath_prefix <- here::here("results")

为输入/输出获取与平台无关、不易出错且生成速度更快的路径规范。

相对路径会导致灾难,尤其是当R脚本不是在所有系统上从完全相同的位置运行时

如果您确定-100%确定-此脚本将始终从一致的位置运行,那么您可以放置:

outpath_prefix <- "../results/"
阅读该函数的帮助页(
?file.path
),特别是针对此gem:

该实现被设计为快速(比粘贴更快),因为该函数在R本身中被广泛使用

然而

考虑使用“项目”概念,并在此处安装
软件包

使用适当的“项目”(即RStudio定义的标准),在项目根目录中放置“
项目名称.Rproj
”,或者在项目根目录中创建其中一个文件(它们可以为空):

- `.here` 
- `.projectile`
或者对项目使用版本控制(这总是一个好主意),并确保
.git
文件位于项目的根目录中

然后你可以做:

outpath_prefix <- here::here("results")

为输入/输出获取与平台无关、不易出错且生成的路径规格更快。

这确实有效,但我试图避免这种情况。我想使用一个全局变量,这个变量应该可以从函数内部访问。如果你真的必须这样做,你可以尝试使用
,它确实有效,但我试图避免这种情况。我想使用一个全局变量,它应该可以从函数内部访问。如果你真的必须这样做,你可以尝试使用
,我知道可能存在的问题。但是,我正在使用脚本中创建的文件夹的相对路径。无论我在哪里运行脚本,这都不会改变。我将试用file.path函数。编辑:file.path()中出错:缺少参数“outpath\u prefix”,没有default@hrbrmstr,我们如何修改它,只设置输出路径,而不设置名称?由于某些函数已经有了要保存的预定义文件名,最具体地说,就是使用homogen和DAILY2CLIMICOL函数的“climatol”包中的函数。在文档中,没有包含用于指定输出路径的参数。很抱歉,如果这听起来很无聊,我来自python,只在这个特定的包中使用R,无法理解。我知道可能存在的问题。但是,我正在使用脚本中创建的文件夹的相对路径。无论我在哪里运行脚本,这都不会改变。我将试用file.path函数。编辑:file.path()中出错:缺少参数“outpath\u prefix”,没有default@hrbrmstr,我们如何修改它,只设置输出路径,而不设置名称?由于某些函数已经有了要保存的预定义文件名,最具体地说,就是使用homogen和DAILY2CLIMICOL函数的“climatol”包中的函数。在文档中,没有包含用于指定输出路径的参数。很抱歉,如果这听起来很无聊,我来自python,只对这个特定的包使用了R,无法理解。这个错误(来自
paste0()
)告诉您环境中没有定义
outpath
。i、 e.它缺失,或者不在全局环境中,或者您在函数中使用了错误的变量名。再加上@hrbrmstr所说的,您的
paste0
将产生“./results//function1results.xls”。很可能您的路径实际上没有双斜杠,该错误(来自
paste0()
)告诉您环境中未定义
outpath
。i、 e.它缺失,或者不在全局环境中,或者您在函数中使用了错误的变量名。再加上@hrbrmstr所说的,您的
paste0
将产生“./results//function1results.xls”。很可能您的路径实际上没有双斜线