给定一个新的会话,执行一个小的ggparcoord(.)函数文档中提供的示例
library(GGally)
data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1], 100), ]
ggparcoord(data = diamonds.samp, columns = c(1, 5:10))结果分为以下情节:

同样,从新会话开始,并使用加载的dplyr执行相同的脚本。
library(GGally)
library(dplyr)
data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1], 100), ]
ggparcoord(data = diamonds.samp, columns = c(1, 5:10))在以下方面的成果:
错误:(列表)对象不能被强制键入'double‘
请注意,库的顺序(.)语句与无关。
问题
我需要dplyr和ggparcoord(.)在一个更大的分析,但这个最小的例子反映了我面临的问题。
版本
更新
总结一下约兰给出的好答案:
答案
工作代码示例:
library(GGally)
library(dplyr)
data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1], 100), ]
ggparcoord(data = as.data.frame(diamonds.samp), columns = c(1, 5:10))发布于 2016-02-11 01:50:06
把我的评论转化成一个答案。
这里的GGally包做了一个合理的假设,即在数据帧上使用[应该像往常一样,而且总是这样。然而,这一切都在哈德利节,diamonds数据集既是一个tbl_df,也是一个data.frame。
加载dplyr时,[的行为将被覆盖,因此drop = FALSE始终是tbl_df的默认行为。因此,在GGally中有一个位置,期望data[,"cut"]返回一个向量,但它返回另一个数据帧。
...specifically,在尝试执行以下操作时,将在示例中引发错误:
data[, fact.var] <- as.numeric(data[, fact.var]). 由于data[,fact.var]仍然是一个数据框架,因此也是一个列表,所以as.numeric无法工作。
至于你的结论,这不是一个错误,我会say....maybe。可能吧。至少,GGally包的作者应该做些什么来解决这个问题。您只需要意识到,使用tbl_df与非Hadley编写的包一起使用可能会破坏一些东西。
正如您已经注意到的,删除额外的类属性解决了问题,因为它将R返回到使用普通的[方法。
https://stackoverflow.com/questions/35327250
复制相似问题