使用write.xls()保存多个数据帧时出错

时间:2014-06-22 17:07:01

标签: python r xls

确保安装了库并且Python 2.7.7在PATH ...

> library(dataframes2xls)
> shell("PATH")
PATH=D:\Program Files\R\R-3.1.0\bin\x64;D:\Python27\;C:\Program Files\Dell\DW WLAN Card;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;D:\Program Files\MATLAB\R2014a\runtime\win64;D:\Program Files\MATLAB\R2014a\bin;C:\Program Files\OpenVPN\bin;D:\Program Files (x86)\java\bin\client\

...我在尝试保存2个数据帧时遇到这种奇怪现象:

> write.xls(c(mtcars, iris), file = "myframes.xls")
D:\Python27\python.exe: can't open file 'D:/Program': [Errno 2] No such file or directory
Warning message:
running command 'python D:/Program Files/R/R-3.1.0/library/dataframes2xls/python/csv2xls.py -i C:\Users\Kuba\AppData\Local\Temp\Rtmpeinq3z/csvfile1.csv,C:\Users\Kuba\AppData\Local\Temp\Rtmpeinq3z/csvfile2.csv -o myframes.xls -s Sheet1,Sheet2 ' had status 2

这是什么意思以及如何解决?

编辑:就像@machow指出的那样,问题是文件夹名称中的空格。将R安装到其名称中没有空格的其他文件夹中解决了问题。但是,还有另一个更明智的解决方案吗?

1 个答案:

答案 0 :(得分:1)

如果你看一下write.xls的来源,第160-162行似乎只是粘贴参数并将它们提供给system()

csv2xls.cmd = paste(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,sep="")
if (system.returnvalue == 0) {
    system.returnvalue = system(csv2xls.cmd)

但是,它不会在目录或转义空间周围放置字符串。 @DrDom提供的The link似乎是一个不错的选择。安装xlsx软件包并从链接中获取save.xlsx函数后,您就可以了

save.xlsx('myframe.xlsx', mtcars, iris)