R,RStudio:以编程方式在32位和64位版本的R之间切换

mcj*_*udd 9 r rstudio

是否有一个函数,在RStudio中,在没有重新打开RStudio的情况下以64位模式或32位模式重新启动R控制台(或者如果无法避免,至少会自动重新打开它)?

我在使用时通常以32位运行,RODBC因此我可以从Access数据库中检索数据,但是仍然希望在仍然在RStudio中时将64位模式的功能用于所有其他任务.

gpi*_*ier 2

您可以将希望使用 32 位可执行文件执行的代码部分保存到新脚本中。例如,我有一个名为 的脚本myscript.r,它将仅打印用于运行它的 R 可执行文件的版本(64 或 32 位):

cat(as.character(version[2]))
Run Code Online (Sandbox Code Playgroud)

当然,您可以将其替换为处理RODBC.

现在,以编程方式运行具有自定义可执行文件的脚本的主要方法是调用操作系统终端shell 的命令。该命令应包含:

  • 要调用哪个可执行文件,在我们的例子中是 R 32 位(目录文件夹Rscript.exe中包含的文件)i386R_HOME
  • 此可执行文件接受的参数,例如我们要使用此可执行文件运行的 R 脚本的路径。

的路径myscript"c:/gp/trash/myscript.r",我的 32 位 R 可执行文件是

paste0(Sys.getenv("R_HOME"), "/bin/i386/Rscript.exe)
C:/PROGRA~1/R/R-40~1.4/bin/i386/Rscript.exe
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令运行此脚本:

myscript <- "c:/gp/trash/myscript.r"
output <- system(paste0(Sys.getenv("R_HOME"), "/bin/x64/Rscript.exe ", myscript), wait = FALSE, invisible = FALSE, intern = T)
output
[1] "x86_64"

output_32 <- system(paste0(Sys.getenv("R_HOME"), "/bin/i386/Rscript.exe ", myscript), wait = FALSE, invisible = FALSE, intern = T)
output_32
[1] "i386"
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我们正在从两个不同的可执行文件执行此脚本。在实践中,我建议将 ODBC 查询的结果保存到一个文件中,您可以在主x64R 会话中读取该文件。


如果您不知道其中一些术语,只需一点词汇:

术语“终端”或“外壳”通常可以互换使用。在 RStudio 中,如果单击console旁边的终端选项卡,您将能够输入将由shell处理的命令

  • Shell命令是指示系统执行某些操作的指令。
  • shell是用于访问操作系统服务的用户界面。
  • 终端是一个运行 shell允许我们输入命令的包装程序。

来源:终端、控制台和 clishell 命令使用 r 编写脚本这个 stackoverflow 答案