在我的系统上,knitr无法编译使用gdata包的文档

时间:2013-06-16 05:18:49

标签: knitr lyx

我的last two个问题令人尴尬,但我确信这个问题真的很划算。我的系统是新安装,因此除操作系统外最新版本:Windows 7 SP1,R-3.0.1,Lyx 2.0.6,knitr 1.2,gdata 2.12.0.2。

首先,请注意gdata在RGui中正常工作。现在,这是我正在尝试编译的文档:

这是输出。

gdata包也可以在命令行调用的Rscript中成功加载。我使用LyX导出.Rnw文件,该文件从RGui成功编织,并从命令行传递给Rscript的脚本编译。

当我第一次开始使用计算机时,我有一个类似的(或者可能是相同的,我不能发誓这个错误信息的身份)的难度。那个时候是由于Windows 7用户帐户控制,当我想出如何自动运行R作为管理员(没有点击 - 甜蜜)时解决了。因此,我尝试删除可能涉及的任何内容的只读属性和所有安全限制 - R文件夹,LyX文件夹,我的包文件夹,MikTeX。没有运气。

下一步是什么?


ETA:尽管我已经知道了,但是没有从LyX调用的R脚本可以加载gdata包。我更改了文件转换器以将stdout和stderr写入文件,这产生了与屏幕截图中上面相同的错误消息,但在此之前:

无法在@INC中找到Data / Dumper.pm(@INC包含:C:/Users/cyanofsky/Documents/R/win-library/3.0/gdata/perl C:/ Program Files(x86)/ MiKTeX 2.9 / miktex / lib。)at C:/Users/cyanofsky/Documents/R/win-library/3.0/gdata/perl/module_tools.pl第11行。

BEGIN失败 - 汇编在C:/Users/cyanofsky/Documents/R/win-library/3.0/gdata/perl/module_tools.pl第11行中止。

在C:/Users/cyanofsky/Documents/R/win-library/3.0/gdata/perl/supportedFormats.pl第9行的编辑失败。

运行'C:\ Program Files \ R \ R-3.0.1 \ bin \ x64 \ Rterm.exe --slave --no-restore --no-save --no-restore --file = C: / Program Files(x86)/ LyX 2.0 / Resources / scripts / lyxknitr.R --args C:/Users/cyanofsky/AppData/Local/Temp/lyx_tmpdir.Hp8008/lyx_tmpbuf3/xxxxxxxxx.Rnw C:/ Users / cyanofsky / AppData /Local/Temp/lyx_tmpdir.Hp8008/lyx_tmpbuf3/xxxxxxxx.tex ISO-8859-15'


ETA:搜索Data / Dumper提取了这个:

http://help.directadmin.com/item.php?id=189

我验证了我的Perl64安装有数据模块;它在C:\ Perl64 \ lib中。所以这是某个路径变量某处配置错误的情况。它不是LyX的路径前缀变量;不,不,那太容易了。


Per Yihui的回答:

从GUI内部(在本例中为RStudio):

> strsplit(Sys.getenv('PATH'), ';')
[[1]]
 [1] "C:\\Program Files\\R\\R-3.0.1\\bin\\x64"                        
 [2] "C:\\Program Files\\R\\R-3.0.1\\bin\\x64"                        
 [3] "C:\\Perl64\\site\\bin"                                          
 [4] "C:\\Perl64\\bin"                                                
 [5] "c:\\Rtools\\bin"                                                
 [6] "c:\\Rtools\\gcc-4.6.3\\bin"                                     
 [7] "c:\\Program Files (x86)\\AMD APP\\bin\\x86_64"                  
 [8] "c:\\Program Files (x86)\\AMD APP\\bin\\x86"                     
 [9] "c:\\Program Files (x86)\\Intel\\iCLS Client\\"                  
[10] "c:\\Program Files\\Intel\\iCLS Client\\"                        
[11] "C:\\Windows\\system32"                                          
[12] "C:\\Windows"                                                    
[13] "C:\\Windows\\System32\\Wbem"                                    
[14] "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\"               
[15] "c:\\Program Files (x86)\\ATI Technologies\\ATI.ACE\\Core-Static"
[16] ""                                                               
[17] "C:\\Program Files\\Intel\\WiFi\\bin\\"                          
[18] "C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\"       
[19] "C:\\Program Files (x86)\\Intel\\OpenCL SDK\\3.0\\bin\\x86"      
[20] "C:\\Program Files (x86)\\Intel\\OpenCL SDK\\3.0\\bin\\x64"      
[21] "C:\\Program Files (x86)\\MiKTeX 2.9\\miktex\\bin\\"             

> Sys.which('perl')
                       perl 
"C:\\Perl64\\bin\\perl.exe" 

这是来自Rscript的调用:

> load("~/lyxknitrpaths.RData")
> syspath
[[1]]
 [1] "C:\\Program Files\\R\\R-3.0.1\\bin\\x644"                       
 [2] "LyXDir\\bin"                                                    
 [3] "$LyXDir\\Python"                                                
 [4] "$LyXDir\\Python\\Lib"                                           
 [5] "$LyXDir\\imagemagick"                                           
 [6] "C:\\Program Files (x86)\\MiKTeX 2.9\\miktex\\bin"               
 [7] "C:\\Program Files (x86)\\LyX 2.0\\ghostscript\\bin"             
 [8] "C:\\Perl64\\lib"                                                
 [9] "C:\\Perl64"                                                     
[10] "C:\\Program Files (x86)\\LyX 2.0\\\\Python"                     
[11] "C:\\Program Files (x86)\\LyX 2.0\\\\Python\\Lib"                
[12] "C:\\Program Files (x86)\\LyX 2.0\\\\imagemagick"                
[13] "C:\\Program Files (x86)\\LyX 2.0\\\\bin"                        
[14] "C:\\Program Files (x86)\\LyX 2.0\\bin\\"                        
[15] "C:\\Program Files\\R\\R-3.0.1\\bin\\x64"                        
[16] "C:\\Perl64\\site\\bin"                                          
[17] "C:\\Perl64\\bin"                                                
[18] "c:\\Rtools\\bin"                                                
[19] "c:\\Rtools\\gcc-4.6.3\\bin"                                     
[20] "c:\\Program Files (x86)\\AMD APP\\bin\\x86_64"                  
[21] "c:\\Program Files (x86)\\AMD APP\\bin\\x86"                     
[22] "c:\\Program Files (x86)\\Intel\\iCLS Client\\"                  
[23] "c:\\Program Files\\Intel\\iCLS Client\\"                        
[24] "C:\\Windows\\System32"                                          
[25] "C:\\Windows"                                                    
[26] "C:\\Windows\\System32\\wbem"                                    
[27] "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\"               
[28] "c:\\Program Files (x86)\\ATI Technologies\\ATI.ACE\\Core-Static"
[29] "C:\\Program Files\\Intel\\WiFi\\bin\\"                          
[30] "C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\"       
[31] "C:\\Program Files (x86)\\Intel\\OpenCL SDK\\3.0\\bin\\x86"      
[32] "C:\\Program Files (x86)\\Intel\\OpenCL SDK\\3.0\\bin\\x64"      
[33] "C:\\Program Files (x86)\\MiKTeX 2.9\\miktex\\bin\\"             

> perlpath
                                             perl 
"C:\\PROGRA~2\\MIKTEX~1.9\\miktex\\bin\\perl.exe" 

1 个答案:

答案 0 :(得分:3)

听起来好像Perl的两个实例在PATH中发生了冲突。请发布以下代码的输出

strsplit(Sys.getenv('PATH'), ';')
Sys.which('perl')

来自LyX / knitr和plain R.(随意用foobar替换任何有关隐私的内容,例如您的用户名)