Консоль R выдает данные независимо от ошибки, а приложение Shiny - не из-за ошибки. Как я могу обойти ошибку в приложении Shiny?
Когда я запускаю приведенный ниже код в консоли R, я получаю следующую ошибку в строке 10:
"Ошибка в lda.default(x, grouping, ...): переменные 5 6 кажутся постоянными внутри групп"
Однако остальная часть кода все еще обрабатывается и данные выводятся на график. Но когда я интегрирую этот код в свое блестящее приложение, панель графика показывает сообщение об ошибке и ничего больше.
Есть ли способ обойти это?
Входные данные:
require(MASS)
require(ggplot2)
require(scales)
require(gridExtra)
x = 'Species'
ex = iris[, x]
lda <- lda(ex ~ ., iris)
prop.lda = lda$svd^2/sum(lda$svd^2)
plda <- predict(object = lda, newdata = iris)
dataset = data.frame(colAndShape = iris[,"Species"], lda = plda$x)
p1 <- ggplot(dataset) + geom_point(aes(lda.LD1, lda.LD2, colour = colAndShape, shape = colAndShape), size = 2.5) +
labs(x = paste("LD1 (", percent(prop.lda[1]), ")", sep=""),
y = paste("LD2 (", percent(prop.lda[2]), ")", sep=""))
grid.arrange(p1)
Консольный вывод:
> require(MASS)
> require(ggplot2)
> require(scales)
> require(gridExtra)
>
> x = 'Species'
>
> ex = iris[, x]
>
> lda <- lda(ex ~ ., iris)
Error in lda.default(x, grouping, ...) :
variables 5 6 appear to be constant within groups
>
> prop.lda = lda$svd^2/sum(lda$svd^2)
>
> plda <- predict(object = lda,
+ newdata = iris)
>
> dataset = data.frame(colAndShape = iris[,"Species"], lda = plda$x)
>
> p1 <- ggplot(dataset) + geom_point(aes(lda.LD1, lda.LD2, colour = colAndShape, shape = colAndShape), size = 2.5) +
+ labs(x = paste("LD1 (", percent(prop.lda[1]), ")", sep=""),
+ y = paste("LD2 (", percent(prop.lda[2]), ")", sep=""))
>
> grid.arrange(p1)
1 ответ
У вас есть ошибка в вашем lda
вызов. Вместо указания имени переменной в формуле вы предоставляете вектор фактора. Вы должны построить формулу из переменных, используя paste
или же sprintf
а также as.formula
,
x = 'Species'
lda <- lda(as.formula(paste(x, ".", sep = "~")), iris)
prop.lda = lda$svd^2/sum(lda$svd^2)
plda <- predict(object = lda, newdata = iris)
dataset = data.frame(colAndShape = iris[,"Species"], lda = plda$x)
p1 <- ggplot(dataset) + geom_point(aes(lda.LD1, lda.LD2, colour = colAndShape, shape = colAndShape), size = 2.5) +
labs(x = paste("LD1 (", percent(prop.lda[1]), ")", sep=""),
y = paste("LD2 (", percent(prop.lda[2]), ")", sep=""))
p1 #grid.arrange(p1) isn't needed in this example.