Я пытаюсь создать коробочную диаграмму с осью Y, преобразованной с помощью преобразования Йео-Джонсона.Ниже моего кода, чтобы попытаться это, но он возвращает ошибку, которая находится ниже кода.Я написал код, используя эту LINK .Для простоты я использую пример с набором данных Iris.Пожалуйста, дайте мне знать ваши мысли о том, как заставить это работать.
Код:
library(scales)
library(VGAM)
trans.yeo <- function(x) {
yeo.johnson(x, inverse = FALSE, lambda = -1.000968)
}
back.yeo <- function(x) {
yeo.johnson(x, inverse = TRUE, lambda = -1.000968)
}
scale.yeo <- function() {
require(scales)
trans_new("yeo", transform = trans.yeo, inverse = back.yeo)
}
iris.bxp <- ggplot(iris, aes(x=Species, y=Sepal.Length, fill=Species)) +
geom_boxplot()+
scale_y_continuous(trans = scale.yeo())
iris.bxp
(Конкретное преобразование с указанной лямбда-выражением может не иметь смысла для переменной Sepal.Length,но это имеет смысл для моих собственных данных. Это просто для того, чтобы привести полезный пример кода, который я создал)
Произошла ошибка:
Ошибка в ans [index] <-(y [index] * lambda [index] + 1) ^ (1 / lambda [index]) -: NA не допускаются при назначениях с подпиской </p>
Редактировать:
, если ясначала определите:
trans_yeo <- trans_new("yeo", transform = trans.yeo, inverse = back.yeo)
, а затем замените scale_y_continuous(trans = scale.yeo())
на coord_trans(y=trans_yeo)
, похоже, оно работает ...