Учитывая свежий сеанс, выполняя небольшой пример 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))
приводит к следующему графику:
Снова, начиная с нового сеанса и выполняя тот же script с загруженным 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 (.) в более крупном анализе, но этот минимальный пример отражает проблему, с которой я сталкиваюсь.
Версия
- R @3.2.3
- dplyr @0.4.3
- GGally @1.0.1
- ggplot @2.0.0
UPDATE
Чтобы обернуть отличный ответ, заданный Джораном:
Ответы
- Образцы кода на самом деле ошибочны, поскольку ggparcoord (.) ожидает, что data.frame не будет 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))