我正在修改提交的论文,并希望用闪亮的新ggplot2版本替换旧的格子图形。但是,我遇到了ggplot2和两个软件包之间的兼容性问题,这对我的分析,硬币和手臂来说绝对至关重要。从手册
执行以下示例时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"
只要硬币或手臂都装好。
以下是详细信息:
运行R 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 :(得分: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
后,您必须对每个绘图执行此操作。