我正在尝试使用R打开RStudio中使用的.Rproj文件。我已经成功完成了以下代码(从Ananda here被盗)。但是,在打开文件后,从R调用的打开RStudio的连接未关闭。 如何在打开.Rproj文件后切断此“连接”?(PS尚未在Linux或Mac上测试过。)
## Create dummy .Rproj
x <- c("Version: 1.0", "", "RestoreWorkspace: Default", "SaveWorkspace: Default",
"AlwaysSaveHistory: Default", "", "EnableCodeIndexing: Yes",
"UseSpacesForTab: No", "NumSpacesForTab: 4", "Encoding: UTF-8",
"", "RnwWeave: knitr", "LaTeX: pdfLaTeX")
loc <- file.path(getwd(), "Bar.rproj")
cat(paste(x, collapse = "\n"), file = loc)
## wheresRStudio function to find RStudio location
wheresRstudio <-
function() {
myPaths <- c("rstudio", "~/.cabal/bin/rstudio",
"~/Library/Haskell/bin/rstudio", "C:\\PROGRA~1\\RStudio\\bin\\rstudio.exe",
"C:\\RStudio\\bin\\rstudio.exe")
panloc <- Sys.which(myPaths)
temp <- panloc[panloc != ""]
if (identical(names(temp), character(0))) {
ans <- readline("RStudio not installed in one of the typical locations.\n
Do you know where RStudio is installed? (y/n) ")
if (ans == "y") {
temp <- readline("Enter the (unquoted) path to RStudio: ")
} else {
if (ans == "n") {
stop("RStudio not installed or not found.")
}
}
}
temp
}
## function to open .Rproj files
open_project <- function(Rproj.loc) {
action <- paste(wheresRstudio(), Rproj.loc)
message("Preparing to open project!")
system(action)
}
## Test it (it works but does no close)
open_project(loc)
答案 0 :(得分:4)
目前尚不清楚你究竟要做什么。您所描述的内容对我来说并不像“连接”那样 - 这是system
来电。
我认为你得到的是,在上面的例子中运行open_project(loc)
之后,在关闭RStudio的实例之前,你不会得到你的R提示由你的功能打开。如果是这种情况,您应该在wait = FALSE
电话中添加system
。
您可能还需要在其中添加ignore.stderr = TRUE
以直接返回提示。我在我的Ubuntu系统上遇到了一些关于“QSslSocket:无法解析SSLv2_server_method”的错误,在我点击“enter”后,它又回到了提示符。 ignore.stderr
可以绕过它(但也可能意味着在严重错误的情况下用户不会得到有意义的错误)。
换句话说,我会将您的open_project()
功能更改为以下内容,看看它是否符合您的预期:
open_project <- function(Rproj.loc) {
action <- paste(wheresRstudio(), Rproj.loc)
message("Preparing to open project!")
system(action, wait = FALSE, ignore.stderr = TRUE)
}