我正在尝试根据robCompositions
中的R
包生成一个情节。我正在使用显示here的示例。有关该软件包的详细信息,请参见here。
使用robCompositions
包进行一些聚类分析后生成此图。
我的系统是64位的Ubuntu 16.10。我使用以下方式设置R
工作目录:
setwd('/home/UserRob/Downloads')
我使用以下方法安装了包和依赖项:
install.packages(c('data.table','pls','robCompositions'))
我可以使用以下R
文件在rtest.R
中执行此示例中的代码:
library(robCompositions)
data(expenditures)
x <- expenditures
rr3 <- clustCoDa(x, k=6, distMethod = "Aitchison", method = "single",
transformation = "identity", scale = "none")
plot(rr3)
dev.off()
当我使用Rscript /home/UserRob/Downloads/rtest.R
在Ubuntu中执行此操作时,我会将一个图保存到/home/UserRob/Downloads/Rplots.pdf
。
我尝试使用rPy2
中的以下代码在rtest.py
中运行此代码:
from rpy2.robjects import r
r.library('robCompositions')
r('data')('expenditures')
x = r('expenditures')
rr3 = r('clustCoDa')(x,k=6,distMethod='Aitchison',method='single',scale='none',
transformation='identity')
r('plot')(rr3)
当我使用python /home/UserRob/Downloads/rtest.py
执行此操作时,不会生成绘图。 Python变量rr3
与上面R
用法的变量相同。因此,代码运行正常,但最后一行 - r('plot')(rr3)
除外。似乎r('plot')
命令根本没有运行。我还在rPy2
中尝试了以下内容:
from rpy2 import robjects
grdevices = importr("grDevices")
graphics = importr("graphics")
from rpy2.robjects import r
r.library('robCompositions')
r('data')('expenditures')
x = r('expenditures')
rr3 = r('clustCoDa')(x,k=6,distMethod='Aitchison',method='single',scale='none',
transformation='identity')
grdevices.png("rtest.png")
graphics.plot(rr3)
grdevices.dev_off()
然而,这也给了我相同的结果 - 情节没有保存到rtest.png
。第graphics.plot(rr3)
行之前的所有代码似乎都能正常运行。
在R's OOPs的文档中,我认为我使用plot()
的方式与显示的plot.lm()
相同。似乎plot()
是类clustCoDa
的类的S3方法(如文档here所示),我只需要使用plot()
- 在文档的第6行,它实际上只链接到通常的plot()
function。
问题:
plot()
中的rPy2
功能是否存在问题?
修改
我在Windows 7 64-bit
中重复了这个问题。以下是详细信息:
Python详细信息:
Python 2.7.8
R详情:
R x64 3.3.2
C:\Users\UserRob\Documents\R\win-library\3.3
Windows环境变量:
R_USER: C:\Python27\Lib\site-packages\rpy2
R_LIBS: C:\Users\UserRob\Documents\R\win-library\3.3
R_HOME: C:\Program Files\R\R-3.3.2
我的 rtest_win.py
文件:
from rpy2.robjects import r
r('.libPaths( c( .libPaths(), "C:/Users/UserRob/Documents/R/win-library/3.3") )')
r.library('robCompositions')
r('data')('expenditures')
x = r('expenditures')
rr3 = r('clustCoDa')(x,k=6,distMethod='Aitchison',method='single',scale='none',
transformation='identity')
r('plot')(rr3)
与Linux一样,代码运行但plot()
命令不生成文件。这使我怀疑问题出在rPy2
。 rPy2
无法使用robCompositions
软件包的plot()
S3方法生成图表。