R system2 проблема, вызывающая R скрипт на windows

Я часто использую RODBC для соединения с базами данных Microsoft Access и могу делать это только в 32-битном R, потому что 32-битный MS Office загружен на моем компьютере с Windows 7.

После извлечения моих данных из базы данных MS Access в 32-битном R я обычно хочу манипулировать и анализировать их в 64-битном R. Кроме того, я пытаюсь написать сценарий, который может понадобиться другим, и я бы хотел упростить вещи, вызывая 32-битный R внутри RStudio (который я настроил для использования 64-битного R, версия 3.1.2).

Я нашел этот пост, который, казалось, был именно тем, что я искал, и попытался запустить предложенный код. Тем не менее, это дает мне фатальную ошибку, указывающую на то, что мой рабочий каталог не существует, хотя я работал с этим каталогом в пределах 64-битного R и 32-битного R с RStudio и без него и никогда не имел проблем:

> 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

Обратите внимание, что я установил R и RStudio в папку "Documents" на диске C, поскольку у меня нет прав администратора.

Кроме того, мой сценарий R находится на сетевом диске (H).

Я попытался скопировать сценарий R, который я хочу запустить, в рабочий каталог по умолчанию 32-разрядного R на моем диске C и явно указать путь к нему без использования 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?

Также есть ресурс, который объясняет, что означают номера статуса в предупреждениях?

Большое спасибо за вашу помощь.

1 ответ

Я пытался сделать то же самое (позвонить в 32-битный R из 64-битного RStudio для RODBC) и задал аналогичный вопрос здесь. Я использовал немного другой подход и сделал:

system(paste0(Sys.getenv("R_HOME"), "/bin/i386/RScript.exe H:\\path\\to\\file.R"), wait = FALSE, invisible = FALSE)
Другие вопросы по тегам