我正在修改一份提交的论文,并希望用闪亮的新ggplot2版本替换旧的格子图形.但是,我遇到了ggplot2和两个软件包之间的兼容性问题,这对我的分析,硬币和手臂来说绝对至关重要.从手册中执行以下示例时
qplot(sleep_rem / sleep_total, awake, data = msleep)
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
Error in function (classes, fdef, mtable) :
unable to find an inherited method for function "empty", for signature "data.frame"
Run Code Online (Sandbox Code Playgroud)
一旦硬币或手臂被装上.
以下是详细信息:
运行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)
Run Code Online (Sandbox Code Playgroud)
这可以用R 2.12重现吗?如果没有,是否值得升级?我必须承认我不愿更新工作系统,特别是在紧迫的截止日期.
它只是硬币包似乎不兼容.原因是其中一个加载的包coin(modeltools确切地说)也包含一个empty()掩盖empty()plyr 功能的函数.更新到R 2.12不会改变一件坏事,因为这两个包都是由其他作者提供的.您应该邮寄ggplot包的作者并告诉他plyr::empty()在他的代码中指定.或者甚至plyr包装中的人,因为问题可能实际存在.
一个可能的黑客可能是:
require(coin)
empty <- plyr::empty
qplot(sleep_rem / sleep_total, awake, data = msleep)
rm(empty)
Run Code Online (Sandbox Code Playgroud)
这适用于使用以下数据框的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)
)
Run Code Online (Sandbox Code Playgroud)
确保empty在绘图后立即从工作区中删除.否则,您可能会遇到其他加载的软件包的问题.在加载包装后,您必须对每个绘图执行此操作coin.
| 归档时间: |
|
| 查看次数: |
866 次 |
| 最近记录: |