R 当使用图层平滑仅选择一个观察时,如何防止光泽崩溃?
我构建了一个闪亮的应用程序,它可以生成一个带有R 当使用图层平滑仅选择一个观察时,如何防止光泽崩溃?,r,shiny,ggvis,R,Shiny,Ggvis,我构建了一个闪亮的应用程序,它可以生成一个带有ggvis的交互式绘图。我添加了sliderInput功能,可以过滤我的数据,并相应地更改绘图。我还向ggvis添加了layer\u smooth调用,并且趋势线会随着用户更改滑块输入和过滤数据而动态调整 不幸的是,当数据被过滤后,只剩下一个观察值时,就不可能创建趋势线和闪亮的崩溃。我有没有办法增加layer\u smooth调用,以便在数据集中只有一个观测值时(过滤后),忽略对layer\u smooth的调用?如果我删除对图层平滑的调用,当只有一
ggvis
的交互式绘图。我添加了sliderInput
功能,可以过滤我的数据,并相应地更改绘图。我还向ggvis
添加了layer\u smooth
调用,并且趋势线会随着用户更改滑块输入和过滤数据而动态调整
不幸的是,当数据被过滤后,只剩下一个观察值时,就不可能创建趋势线和闪亮的崩溃。我有没有办法增加layer\u smooth
调用,以便在数据集中只有一个观测值时(过滤后),忽略对layer\u smooth
的调用?如果我删除对图层平滑的调用,当只有一个观测值存在时,Shiny不会崩溃,但我非常希望保留趋势线功能
我重新创建了一些示例代码来说明这个问题。启动应用程序后,如果过滤仪表板上的mpg
滑块,直到只剩下一个观察值,应用程序将崩溃
library(shiny)
library(ggvis)
library(dplyr)
data(mtcars)
server <- function(input, output) {
example <- reactive({
# set initial values
minmpg <- input$m[1]
maxmpg <- input$m[2]
# apply filters
mpg_example <- mtcars %>%
filter(
mpg >= minmpg,
mpg <= maxmpg)
mpg_example <- as.data.frame(mpg_example)})
vis <- reactive({
example %>%
ggvis(x = ~mpg, y = ~disp) %>%
layer_points(size := 50) %>%
layer_smooths(span = 1.5)
})
vis %>% bind_shiny("distPlot")
}
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
sliderInput("m", "mpg", 10,
33, value = c(10, 33), step = 1)),
mainPanel(ggvisOutput("distPlot"))
)
)
shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(ggvis)
图书馆(dplyr)
数据(mtcars)
服务器提示:(1)使用example()
viceexample
,dplyr很乐意推断您的意图;(2) 尝试使用过滤器(介于(mpg、minmpg、maxmpg)之间)
。。。没有帮助错误,只是更简洁易读;(3) 请包括您看到的实际错误,这可能有助于“钩住”某人帮助解决问题。感谢提示和编辑,非常感谢!
Warning: Error in predLoess: NA/NaN/Inf in foreign function call (arg 5)
Stack trace (innermost first):
114: predLoess
113: predict.loess
112: stats::predict
111: pred_grid.loess
110: pred_grid
109: compute_model_prediction.data.frame
108: compute_model_prediction
Warning: Error in predLoess: NA/NaN/Inf in foreign function call (arg 5)
Stack trace (innermost first):
62: <Anonymous>
61: stop
60: r_spec
59: observerFunc