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)