2017-02-10 22 views
1

當我在R控制檯運行下面的代碼時,得到下面的錯誤在管線10:R控制檯提供輸出,無論錯誤如何,但Shiny應用程序不會因錯誤而失敗。我如何繞過Shiny應用程序中的錯誤?

「錯誤在lda.default(X,分組,...): 變量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一個錯誤。公式中不提供變量名稱,而是提供因子向量。您應該使用pastesprintfas.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. 

enter image description here

+0

行'EX =虹膜[中,x]'不需要 –

+0

我沒有移除,因爲它可能是在有機磷農藥應用,而不是他們的MWE部分下游。同樣的原因,我爲什麼將'grid.arrange()'部分註釋掉了,因爲它可能會在其他地方使用 –

+0

現在我得到了一個不同的錯誤,並且應用程序仍然以相同的方式運行。 「eval(expr,envir,enclos)中的錯誤:未找到對象'setosa'」 – Anuraag

相關問題