我正在研究R中的一些教程.每个R代码都包含在一个特定的文件夹中.那里有数据文件和其他文件.我想打开.r文件并获取它,这样我就不必更改Rstudio中的工作目录,如下所示:

有没有办法在R中自动指定我的工作目录
使用R脚本从命令行执行简单绘图非常方便.但是,从bash脚本运行R并不方便.理想可能是这样的
#!/path/to/R
...
Run Code Online (Sandbox Code Playgroud)
要么
#!/usr/bin/env R
...
Run Code Online (Sandbox Code Playgroud)
但我无法完成其中任何一项工作.
另一个选择是将脚本纯粹保存在R中,例如script.R,并使用R --file=script.R或类似地调用它.但是,有时脚本会依赖于模糊的命令行开关,此时代码的一部分存在于脚本之外.例如:通过本地.Rprofile将事物从bash偷偷带入R中,所需的开关就是一切--vanilla意味着除外--no-init-file.
另一种选择是用于存储R标志的bash脚本,并且可以无痛地执行,然后调用R脚本.问题是,这意味着单个程序被分成两个文件,现在必须保持同步,一起转移到新机器等.
我目前最鄙视的选项是将R嵌入到bash脚本中:
#!/bin/bash
... # usage message to catch bad input without invoking R
... # any bash pre-processing of input
... # etc
R --random-flags <<RSCRIPT
# R code goes here
RSCRIPT
Run Code Online (Sandbox Code Playgroud)
一切都在一个文件中.它是可执行的,可以轻松处理参数.问题是像这样结合bash和R几乎消除了任何IDE不会在一个或另一个上失败的可能性,并且让我的心脏受到伤害.
我错过了一些更好的方法吗?
在许多(解释型)编程语言中,在获取文件时会设置一个变量,以便某些代码可以确定加载文件的文件名。例如,在 ruby 中,该变量__FILE__是在加载文件时设置的。
R中有这样的功能吗?R 代码有没有办法确定它从哪里加载?
例子:
主要.R:
source("foo.R")
Run Code Online (Sandbox Code Playgroud)
/home/bar/foo.R:
print(FULL_FILENAME)
Run Code Online (Sandbox Code Playgroud)
我必须用什么替换 FULL_FILENAME 才能打印:
[1] "/home/bar/foo.R"
Run Code Online (Sandbox Code Playgroud)
无需在源代码中硬编码任何文件名?