2010-10-17 79 views
3

我正在修改提交的論文,並希望用閃亮的新ggplot2版本替換舊的格子圖形。然而,我遇到了ggplot2和兩個對我的分析,硬幣和手臂絕對至關重要的軟件包之間的兼容性問題。從手動ggplot2與R中的其他軟件包不兼容?

qplot(sleep_rem/sleep_total, awake, data = msleep) 

執行下面的例子,當我得到一個錯誤消息說:

Error in function (classes, fdef, mtable) : 
    unable to find an inherited method for function "empty", for signature "data.frame" 

只要任一硬幣或臂被加載。

下面是詳細信息:

運行v 2.10.1,空.RData文件

require(ggplot2) 
require(xtable) 
require(MASS) 
require(gdata) 
require(car) 
require(Hmisc) 
require(psych) 

qplot(sleep_rem/sleep_total, awake, data = msleep) 

require(coin) 
qplot(sleep_rem/sleep_total, awake, data = msleep) 

require(arm) 
qplot(sleep_rem/sleep_total, awake, data = msleep) 

這是可重複的,其中R 2.12?如果沒有,可能值得升級?我必須承認,我不願意更新工作系統,特別是在緊迫的期限內。

+0

如果您添加一些示例數據,我們可以檢查它是否可重現。 – 2010-10-17 14:03:56

回答

7

這只是硬幣包似乎不兼容。原因是其中一個包裝與coin(確切地說是modeltools)一起加載的包也包含掩蓋plyr的功能empty()的功能empty()。更新到R 2.12不會改變軟件,因爲這兩個軟件包都是由其他作者貢獻的。你應該郵寄ggplot包的作者並告訴他在他的代碼中指定plyr::empty()。或者甚至是來自plyr包的人,因爲問題實際上可能在那裏。

一個可能的黑客可能是:

require(coin) 
empty <- plyr::empty 
qplot(sleep_rem/sleep_total, awake, data = msleep) 
rm(empty) 

這個工程上使用2.11.1下面的數據幀:

msleep <- data.frame(
    sleep_rem=c(1,2,3,4,5), 
    sleep_total=c(10,20,30,40,50), 
    awake=c(5,4,3,2,1) 
) 

確保您繪製後立即刪除從工作區empty。否則,您可能會遇到加載的其他包的問題。在加載包coin後,您必須對所做的每個圖都做到這一點。

+0

This Works! Joris,dank je wel(假設你是荷蘭人 - 我是德國人)。 ggplot2和plyr的作者是Hadley Wickham,所以如果我告訴他,我已經告訴了所有相關的人。 – 2010-10-17 14:50:55

+0

@Maria:我已經寄給他了,沒有意識到他是兩個人的作者。事實上,我是比利時人。 Graag gedaan dus。 ;-) – 2010-10-17 14:53:49

+3

這個問題應該在ggplot2的開發版本中修復。 – hadley 2010-10-17 15:44:11

相關問題