R控制台提供输出,不管有无错误,但闪亮的应用程序提供';这是由于错误造成的。如何绕过闪亮应用程序中的错误?

R控制台提供输出,不管有无错误,但闪亮的应用程序提供';这是由于错误造成的。如何绕过闪亮应用程序中的错误?,r,shiny,lda,data-science,linear-discriminant,R,Shiny,Lda,Data Science,Linear Discriminant,在R控制台中运行下面的代码时,第10行出现以下错误: lda中出错。默认值(x,分组,…): 变量5 6在组内似乎是恒定的” 但是,代码的其余部分仍在处理中,数据已打印出来。但是,当我将此代码集成到我闪亮的应用程序中时,绘图面板会显示错误消息,而不会显示其他内容 有没有办法绕过这个问题 输入: require(MASS) require(ggplot2) require(scales) require(gridExtra) x = 'Species' ex = iris[, x] lda &

在R控制台中运行下面的代码时,第10行出现以下错误:

lda中出错。默认值(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(质量)
需要(ggplot2)
需要(天平)
需要(额外)
x=‘物种’
ex=虹膜[,x]
lda要求(比例)
>需要(额外)
> 
>x=‘物种’
> 
>ex=虹膜[,x]
> 
>lda
>prop.lda=lda$svd^2/总和(lda$svd^2)
> 
>plda
>dataset=data.frame(colAndShape=iris[,“物种”],lda=plda$x)
> 
>p1
>网格排列(p1)

您的
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.
x='Species'

lda不需要该行
ex=iris[,x]
,因为它可能位于OPs应用程序的下游,而不是其MWE的一部分。同样的原因,我注释掉了
grid.arrange()
部分,因为它可能在其他地方使用。我得到了一个不同的错误,应用程序仍然以相同的方式运行。“eval(expr、envir、enclose)中出错:未找到对象‘setosa’”不同的错误=新问题。您可能需要考虑包括应用程序的完整代码。
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.