【问题标题】:Add existing scripts to an Rstudio project将现有脚本添加到RStudio项目中
【发布时间】:2015-04-26 14:03:26
【问题描述】:

我在 Rstudio 工作并打开了多个具有不同工作目录的脚本;但是,每个工作目录都存在于我计算机上一个较大的文件夹中(见下文)。是否可以将这些脚本添加到 Rstudio 项目而不重新组织我的所有文件并更改每个脚本的工作目录?

电脑上的文件结构:

文件夹 A

~~文件夹 1

~~文件夹 2

~~文件夹 3

假设我打开了 3 个脚本,每个脚本都有一个文件夹 1、2 或 3 的工作目录。我可以创建一个包含所有三个脚本的项目吗?说,将工作目录设置为“文件夹A”

非常感谢。

【问题讨论】:

  • rstudio.com 有一个您可以查看的帮助论坛,但您可能应该在那里更详细地描述您的问题,因为您并不清楚您在问什么。在我们的网站上,与统计无关的问题是题外话:stats.stackexchange.com/help/on-topic
  • 我同意这个问题在 Cross Validated 上是题外话。但是,我不建议使用 RStudio 的论坛(或者,至少将其作为主要的答案来源),因为它们回答问题的速度相当慢,有时甚至会忽略(错过)它们。此类问题应在 StackOverflow (SO) 上使用标签 rrstudio 提出。我会将您的问题标记为迁移,本地版主将帮助您解决此问题。不要忘记在 SO 上注册以便能够在那里进行交互。

标签: r rstudio


【解决方案1】:

从技术上讲,您可以在项目中以编程方式更改工作目录,但这被认为是一种非常糟糕的做法,强烈建议不要这样做。但是,您可以在项目的顶级(在您的示例中为文件夹 A 的完整路径)设置工作目录,然后参考 scriptsobjects,通过相应的相对路径位于文件夹 1-3 中。例如:"./Folder1/MyScript.R""./Folder2/MyData.csv"

【讨论】:

  • 拥有setwd()source() 有什么不好?
  • @gung:我没有说任何反对source()的事情。但是,明确使用setwd() 被认为是一种不好的做法,会损害软件的再现性stackoverflow.com/q/13770304/2872891。话虽如此,在极少数情况下,(项目范围内)单独使用 setwd() 是有意义的。
【解决方案2】:

应该可以在较大的文件夹中创建项目。您甚至可以在 Folder A 中构建一个简单的主脚本来管理此工作流程:

setwd("./Folder 1")
source("scriptx")
setwd("..")

setwd("./Folder 2")
source("scripty")
setwd("..")

setwd("./Folder 3")
source("scriptz")
setwd("..")

与在Folder A 中运行每个脚本的source("Folder 1/scriptx") 相比,主脚本将在其自己的文件夹中运行每个脚本。只需确保在每个文件夹中运行代码后使用setwd(".."),您甚至可以在其间运行代码以将输出保存到主Folder A

如果您的工作流程总是以这种方式创建文件夹,我看不出如果您使用相对路径,这将如何无法重现。尽管依赖于平台,但此修改后的版本将动态创建文件夹并运行保存在 Folder A 中的脚本。

system("mkdir Folder_1")
setwd("./Folder_1")
source("../Folder A/scriptx")
setwd("..")

在此注意,在 R 中运行终端命令时,建议避免在目录或文件名中使用空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2023-03-15
    • 2016-12-20
    • 1970-01-01
    • 2017-03-25
    • 2020-12-22
    • 2013-02-12
    相关资源
    最近更新 更多