给定一个新会话,执行函数文档中提供的一个小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'
请注意,library(.)语句的顺序无关紧要。
问题
- 代码示例有问题吗?
- 有没有办法克服这个问题(通过一些命名空间函数)?
- 或者这是一个错误?
我需要dplyr和ggparcoord(.)在更大的分析中,但这个最小的例子反映了我面临的问题。
版本
- R@3.2.3
- dplyr @ 0.4.3
- GGally @ 1.0.1
- ggplot @ 2.0.0
更新
总结 Joran 给出的出色答案:
答案
- 代码示例实际上是错误的,因为ggparcoord(.)需要一个data.frame而不是diamonds数据集给出的 tbl_df(如果加载了 dplyr)。
- 通过将tbl_df强制为data.frame来解决问题。
- 不,这不是错误。
工作代码示例:
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))