我有一个名为的脚本foo.R包含另一个脚本other.R,该脚本位于同一目录中:
#!/usr/bin/env Rscript
message("Hello")
source("other.R")
Run Code Online (Sandbox Code Playgroud)
但我想R发现other.R无论当前的工作目录是什么.
换句话说,foo.R需要知道自己的路径.我怎样才能做到这一点?
有没有办法以编程方式在脚本本身内找到R脚本的路径?
我问这个是因为我有几个脚本使用RGtk2并从.glade文件加载GUI.
在这些脚本中,我不得不setwd("path/to/the/script")在开头放置一条指令,否则将找不到.glade文件(位于同一目录中).
这很好,但如果我将脚本移动到另一个目录或另一台计算机,我必须更改路径.我知道,这不是什么大问题,但有一些东西会很好:
setwd(getScriptPath())
那么,是否存在类似的功能?
我在几台机器上使用Windows下的R.
我知道你可以在R脚本中设置工作目录,就像这样
setwd("C:/Documents and Settings/username/My Documents/x/y/z")
Run Code Online (Sandbox Code Playgroud)
...但是这会破坏脚本的可移植性.必须反转所有斜杠(因为Windows为您提供反斜杠)也很烦人
有没有办法在特定的工作目录中启动R,这样您就不需要在脚本级别执行此操作了?
sourced或Sweaved文件如何找到自己的路径?
背景:
我使用.R脚本或.Rnw文件工作了很多.我的项目是在一个目录结构中组织的,但是项目基本目录的路径经常在不同的计算机之间变化(例如,因为我只为其他人做了部分数据分析,他们的目录结构与我的不同:我有项目基目录〜/ Projects/StudentName /或〜/ Projects/Studentname/Projectname和大多数只拥有一个项目的学生通常在〜/ Measurements /或〜/ DataAnalysis /或类似的东西下 - 这对我不起作用).
所以像一条线
setwd (my.own.path ())
Run Code Online (Sandbox Code Playgroud)
将是非常有用的,因为它将允许确保工作目录是项目的基本路径,无论该项目实际在哪里.无需用户必须考虑设置工作目录.
让我澄清一下:我寻找的解决方案可以按下不假思索的用户的编辑器/ IDE source或Sweave键盘快捷键.
我正在Rstudio中编写一个R脚本,我想要一些方法来获取编写代码的文件的名称.我想要这样做的原因是我想要一段代码我可以坚持在底部我的所有脚本,以便我的结果会自动通过sendmailR包发送给我.
我希望我的附件名称具有filename_date结构,其中filename是正在执行的文件的名称,date是执行的时间.有没有办法这样做,或者我每次运行新脚本时都必须手动输入文件名.
这里也提出了类似的问题,但由于使用方法的不同,解决方案解决方案从未提供过答案.我实际上不需要位置,只需要文件名,我认为这应该是可行的(但可能不是)
Rscript:确定执行脚本的路径(问基本相同的问题,但想要整个路径,没有接受的答案)
我想找到用于在R中计算的脚本.R文件的位置.
我知道通过键入对象函数,我将获得正在运行的代码,然后我可以复制和编辑并将其保存为新的脚本文件并使用它.
要求查找foo.R文件的原因是
如果可能的话,我正在寻找更一般的答案.
编辑:根据目前为止的评论,这里是使用自回归方法计算时间序列谱的代码.数据输入是单变量系列.
x = ts(data)
spec.ar(x, method = "yule-walker") 1
spec.ar(x, method = "burg") 2
Run Code Online (Sandbox Code Playgroud)
命令1运行正常.命令2给出以下错误.
Error in ar.burg.default(x, aic = aic, order.max = order.max, na.action = na.action, :
Burg's algorithm only implemented for univariate series
Run Code Online (Sandbox Code Playgroud)
我确实尝试正确指定所有参数,如na.action = na.fail,order.max = NULL等,但消息是相同的.请建议可能的解决方案.
PS(这个问题是在搜索安装了R的库文件夹和zip文件后发布的,这些文件随包,手册和打开.rdb,.rdx文件一起提供)