我的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"
答案 0 :(得分:3)
听起来好像Perl的两个实例在PATH
中发生了冲突。请发布以下代码的输出
strsplit(Sys.getenv('PATH'), ';')
Sys.which('perl')
来自LyX / knitr和plain R.(随意用foobar
替换任何有关隐私的内容,例如您的用户名)