【问题标题】:Sourcing R files housed within an R project and maintaining relative paths采购 R 项目中的 R 文件并维护相对路径
【发布时间】:2019-03-27 02:44:12
【问题描述】:

好的,所以我喜欢在 Rstudio 中使用 R 项目来处理我正在使用的脚本和数据。但是,假设我想在另一个目录中获取这些脚本...R 不会检测到 .Rproj 文件,除非从它所在的目录调用该脚本。有没有办法从另一个目录中获取属于 R 项目一部分的 R 脚本?

这是相关的,因为我有一个系统,我在一个目录中执行分析并制作图形,然后生成在另一个目录中使用这些图形的 LaTeX 文档。我希望能够获取制作图形的 R 脚本并将它们保存到我用 LaTeX 编写的目录中。

这是一个 MRE:

已经在目录中创建了一个 R 项目(通过 Rstudio 完成)...我们称之为 ~/test。

创建一些数据:

a <- 1:10
dat <- data.frame(a = a, b = a + rnorm(length(a), 10, 2))
save(dat, file = "test.RData")

将以下脚本放入 ~/test.我们称之为 test.R。

load("test.RData")

pdf(file = "plot.pdf")
plot(b ~ a, data = dat)
dev.off()

效果很好,对吧?但是,如果我们从任何其他目录尝试以下操作,R 就无法弄清楚。

cd ~
Rscript ~/test/test.R

任何周到的解决方案?我想在我从中获取原始脚本的脚本中只使用setwd() 很容易,但这违背了使用 R 项目的全部目的。

【问题讨论】:

  • 我不确定我是否理解。 Rscript 与 RStudio 或 RStudio 项目无关。如果您从特定目录调用脚本,除非另有说明,否则该目录将是它查找文件的根目录(因为您不提供绝对路径)。在你的情况下,你从你的主目录调用 Rscript,所以这是 R 寻找 "test.RData" 的地方。
  • 对不起,应该在问题中更清楚地说明这一点。是的,我从主目录调用脚本,但脚本位于 ~/test 中,并且数据是从脚本中加载的。也许我只是对 R 项目是什么以及应该如何使用它感到困惑
  • 是的,我理解您的所作所为,正如我在第一条评论中解释的那样,行为符合预期。 RStudio 项目与 R 本身无关。如果你设置了一个 RStudio 项目,它将(除其他外)创建一个带有 RStudio 特定参数的元文件。正如您已经指出的那样,如果您从不同的目录调用 R(或 Rscript),则需要使用 setwd 指定 工作目录

标签: r rscript


【解决方案1】:

您可以在脚本开头使用setwd("~/test/"),如有必要,稍后再改回来。

【讨论】:

  • 是的,我已将其包含在原始问题的底部。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 2020-11-28
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
相关资源
最近更新 更多