1

我经常使用 RODBC 连接 Microsoft Access 数据库,并且只能在 32 位 R 中执行此操作,因为我的 Windows 7 PC 上加载了 32 位 MS Office。

从 32 位 R 中的 MS 访问数据库中提取我的数据后,我通常想在 64 位 R 中操作和分析它。此外,我正在尝试编写其他人可能需要使用的脚本,我想通过在 RStudio 中调用 32 位 R 来简化事情(我已经设置为使用 64 位 R,版本 3.1.2)。

我发现这篇文章似乎正是我想要的,并尝试运行建议的代码。但是,这给了我一个致命的错误,表明我的工作目录不存在,即使我一直在使用和不使用 RStudio 的 64 位 R 和 32 位 R 中从这个目录工作并且从未遇到任何问题:

> system2("C:\\Users\\Joe.Bloggs\\Documents\\R\\R-3.1.2\\bin\\i386\\Rscript.exe", normalizePath("my script.R", winslash = "\\", mustWork = TRUE), invisible=FALSE)
Fatal error: cannot open file 'H:\03.': No such file or directory

Warning message:
running command '"C:\Users\Joe.Bloggs\Documents\R\R-3.1.2\bin\i386\Rscript.exe" H:\03. B Project\my script.R' had status 2

请注意,由于我没有管理权限,因此我已在 C 盘的“Documents”文件夹中安装了 R 和 RStudio。

此外,我的 R 脚本位于网络驱动器 (H) 上。

我尝试将要运行的 R 脚本复制到我的 C 驱动器上的 32 位 R 的默认工作目录中,并在不使用 normalizePath 的情况下明确说明它的文件路径(因为我假设此命令扩展到我当前的工作目录 64-位 R),但这会产生与上述相同的错误。

此外,如果我只是尝试调用 32 位 R,我会收到警告:

> system2("C:\\Users\\Joe.Bloggs\\Documents\\R\\R-3.1.2\\bin\\i386\\Rscript.exe", invisible=FALSE)
Usage: /path/to/Rscript [--options] [-e expr [-e expr2 ...] | file] [args]

--options accepted are
  --help              Print usage and exit
  --version           Print version and exit
  --verbose           Print information on progress
  --default-packages=list
                      Where 'list' is a comma-separated set
                        of package names, or 'NULL'
or options to R, in addition to --slave --no-restore, such as
  --save              Do save workspace at the end of the session
  --no-environ        Don't read the site and user environment files
  --no-site-file      Don't read the site-wide Rprofile
  --no-init-file      Don't read the user R profile
  --restore           Do restore previously saved objects at startup
  --vanilla           Combine --no-save, --no-restore, --no-site-file
                        --no-init-file and --no-environ

'file' may contain spaces but not shell metacharacters
Expressions (one or more '-e <expr>') may be used *instead* of 'file'
See also  ?Rscript  from within R
Warning message:
running command '"C:\Users\Joe.Bloggs\Documents\R\R-3.1.2\bin\i386\Rscript.exe"' had status 1 

任何对我做错了什么的见解将不胜感激;我尝试在两个文件路径中使用单正斜杠而不是双反斜杠,但无济于事;我仍然遇到同样的错误。

如何让 system2 找到我的 R 脚本并在 32 位 R 中运行它?

还有一个资源可以解释警告中的状态数字是什么意思?

非常感谢您的帮助。

4

1 回答 1

1

我一直在尝试做同样的事情(从 64 位 RStudio 中为 RODBC 调用 32 位 R)并在此处提出了类似的问题。我使用了一种稍微不同的方法并做了:

system(paste0(Sys.getenv("R_HOME"), "/bin/i386/RScript.exe H:\\path\\to\\file.R"), wait = FALSE, invisible = FALSE)
于 2015-05-15T07:28:58.017 回答