Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R system2在windows上调用R脚本时出现问题_R_Rstudio_32 Bit_System2 - Fatal编程技术网

R system2在windows上调用R脚本时出现问题

R system2在windows上调用R脚本时出现问题,r,rstudio,32-bit,system2,R,Rstudio,32 Bit,System2,我经常使用RODBC连接Microsoft Access数据库,并且只能在32位R中进行连接,因为我的Windows 7 PC上加载了32位MS Office 在以32位R从MS access数据库提取数据后,我通常希望以64位R对其进行操作和分析。此外,我正在尝试编写一个其他人可能需要使用的脚本,我希望通过在RStudio中调用32位R(我已设置为使用64位R,版本3.1.2)来简化事情 我发现这似乎正是我正在寻找的,并尝试运行建议的代码。但是,这给了我一个致命错误,表明我的工作目录不存在,即

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

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

我发现这似乎正是我正在寻找的,并尝试运行建议的代码。但是,这给了我一个致命错误,表明我的工作目录不存在,即使我一直在64位R和32位R范围内使用RStudio和不使用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
请注意,我已经在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(“C:\\Users\\Joe.Bloggs\\Documents\\R\\R-3.1.2\\bin\\i386\\Rscript.exe”,不可见=FALSE)
用法:/path/to/Rscript[--options][e expr[-e expr2…]| file][args]
--接受的选择是
--帮助打印使用和退出
--版本打印版本并退出
--详细打印进度信息
--默认包=列表
其中“list”是逗号分隔的集合
包名称的名称,或“NULL”
或者R的选项,除了--slave--no restore,例如
--在会话结束时保存工作区
--无环境不读取站点和用户环境文件
--无站点文件不读取站点范围的Rprofile
--no init file不读取用户R配置文件
--还原在启动时还原以前保存的对象
--香草组合--无保存,-无恢复,-无站点文件
--没有初始化文件,也没有环境
“文件”可以包含空格,但不能包含shell元字符
表达式(一个或多个“-e”)可以*而不是*使用“file”
另请参见R中的Rscript
警告信息:
运行命令“C:\Users\Joe.Bloggs\Documents\R\R-3.1.2\bin\i386\Rscript.exe”的状态为1
如果能洞察到我做错了什么,我将不胜感激;我尝试在两个文件路径中使用单正斜杠而不是双反斜杠,但都没有用;我还是犯了同样的错误

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

是否有资源解释警告中的状态编号的含义


非常感谢你的帮助

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

system(paste0(Sys.getenv("R_HOME"), "/bin/i386/RScript.exe H:\\path\\to\\file.R"), wait = FALSE, invisible = FALSE)

您可以尝试转义文件名
“my\script.R”
中的空格,或者使用不带空格的文件名,尽管这看起来无法完全解决问题,因为H:\03之间仍然有空格。还有其余的目录如何
shQuote(normalizePath(…)
?谢谢-在normalizePath解决问题之前添加shQuote-它现在已经运行了我的脚本。我想知道这是否是因为shQuote对子目录名称中的空格有不同的处理;以@rawr怀疑的方式逃离他们是行不通的新的堆栈溢出,有没有一种方法,我可以接受这作为答案?谢谢你的建议-我尝试了这一点,但它返回了相同的错误。这个问题似乎与目录名中的空格有关,使用shQuote可以解决这个问题。