在RStudio中创建新项目的脚本

12
我希望写一个模板来在 RStudio 中创建新项目。我的想法是:
  1. 在名为 "MyNewProject" 的文件夹中创建一个新的 RStudio 项目。
  2. 使用 ProjectTemplate 包在此文件夹中创建一个新项目: create.project('MyNewProject')
  3. 对此文件夹进行一些修改。
我相信我可以编写步骤2和3的代码,但我不知道如何通过脚本在 RStudio 中创建一个新项目。如果可能的话,我该怎么做呢?

你有没有看过devtools,特别是create函数?(请注意,这将在文件夹中创建一个R包,而不仅仅是R项目) - David Robinson
@DavidRobinson 不,我没有。我只是想要一个能够创建一个文件夹的代码,其中包括"MyNewProject.Rproj"文件和一个git,以便在第一步中陪伴它。 - HBat
你可以编写一个并将其放入你的.Rprofile文件中。 - Rich Scriven
4个回答

8

使用新的usethis包,回答您问题1更简单:

library(usethis)
create_project(path = "MyNewProject", open = TRUE, rstudio = TRUE)

这段代码会创建一个名为"MyNewProject"的文件夹,生成"MyNewProject.Rproj"文件,并打开一个新的RStudio会话,工作目录为"MyNewProject"。
在新的会话中,现在在"MyNewProject"文件夹中,您可以运行以下代码来初始化本地git仓库。
library(usethis)
use_git()

如果您正确配置了所有Git,甚至可以在Github上创建一个远程代码库,方法如下:

use_github()

两个有用的参考文献:

  1. usethis

  2. 用R开心地使用Git和Github


8

.Rproj文件并没有什么特别之处,它只是一个文本文件,具有默认的一些内容:

Version: 1.0

RestoreWorkspace: Default
SaveWorkspace: Default
AlwaysSaveHistory: Default

EnableCodeIndexing: Yes
UseSpacesForTab: Yes
NumSpacesForTab: 4
Encoding: UTF-8

RnwWeave: knitr
LaTeX: pdfLaTeX

所以,这个函数可以实现你想要的功能:
myProject <- function(proj, ...) {

    require(ProjectTemplate)
    create.project(proj, ...)

    x <- c("Version: 1.0", "", "RestoreWorkspace: Default", "SaveWorkspace: Default", 
        "AlwaysSaveHistory: Default", "", "EnableCodeIndexing: Yes", 
        "UseSpacesForTab: Yes", "NumSpacesForTab: 4", "Encoding: UTF-8", 
        "", "RnwWeave: knitr", "LaTeX: pdfLaTeX")

    cat(paste(x, collapse="\n"), file=file.path(proj, paste0(basename(proj), ".Rproj")))

    message(paste(basename(proj), "has been created"))
}

myProject("MyNewProject.Rproj")

对于git要求,打开文件夹并使用以下命令:

qdapTools::repo2github()

在控制台中(当然需要安装 qdapTools)。

非常感谢您的回答。我相信没有办法通过R代码从RStudio的界面创建一个新项目。没关系,我可以使用您提供的方法来创建一个项目模板。 - HBat

5

2

我知道这是一个稍微有些陈旧的问题,但是对于其他人来说,有一种通过脚本编码.Rproj的方法。

如果您查看devtools::create函数,会发现有一个名为use_rstudio的函数。查看该函数的内容,您可以得到:

> devtools::use_rstudio
function (pkg = ".") 
{
    pkg <- as.package(pkg)
    path <- file.path(pkg$path, paste0(pkg$package, ".Rproj"))
    if (file.exists(path)) {
        stop(pkg$package, ".Rproj already exists", call. = FALSE)
    }
    message("Adding RStudio project file to ", pkg$package)
    template_path <- system.file("templates/template.Rproj", 
        package = "devtools")
    file.copy(template_path, path)
    add_git_ignore(pkg, c(".Rproj.user", ".Rhistory", ".RData"))
    add_build_ignore(pkg, c("^.*\\.Rproj$", "^\\.Rproj\\.user$"), 
        escape = FALSE)
    invisible(TRUE)
}
<environment: namespace:devtools>

请查看template_path部分。这是您可以使用的代码来创建.Rproj文件。因此,脚本中的最终代码将是:

path <- file.path('path/to/folder', paste0('foldername', ".Rproj"))
template_path <- system.file("templates/template.Rproj", 
    package = "devtools")
file.copy(template_path, path)

现在您可以通过代码创建一个 .Rproj 文件! :)

我已经使用了system.file的脚本一段时间,但现在它不再起作用了。不知道出了什么问题? - marc
1
@marc 函数 use_rstudio 现在已经成为 usethis 包的一部分,该包在 2018 年 10 月 30 日发布的 devtool 2.0.0 中与 devtools 包解耦。请参阅 usethis - josep maria porrà

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接