R shiny 没有正确接受用户输入

R shiny not taking user input correctly

非常基本的 R 闪亮问题我确定。我想 运行 对玩具数据集进行线性回归,使用它来根据使用的输入预测相应的值,并根据给定值和预测值绘制一条回归线。

当我 运行 执行此操作时,出现错误: 正在收听 http://XXX 警告:'newdata' 有 1 行,但找到的变量有 6 行 段错误(newData,0,newData,newData.pred,col = "red"): 第一个参数无效

所以我意识到这就是我处理用户输入的方式。我只想获取他们给出的数值,将其提供给 predict.lm 并绘制结果线。如果可能的话,我也喜欢文本以提供 predict.lm 输出。

ui.R

 library(shiny)
 (pageWithSidebar(
 headerPanel('Predicty'),
sidebarPanel
(
numericInput('clusters', 'Absorbance', 0.1, min = 0, max = 100, step = 0.00001)
),
mainPanel
(
  plotOutput('plot1')
)
))

server.R

 library(shiny)

##  Initial data and linear regression. 
conc <- c(.25, .5, 1, 1.5, 2, 2.5) 
abs <- c(.332, .631, .972, 1.201, 1.584, 1.912) 
results <- data.frame(abs,conc) 
abss <- lm(conc~abs, data = results)


shinyServer(function(input, output) {

output$plot1 <- renderPlot({


 newData.in <- reactive({
inFile <- input$clusters
inFile
 })

 newData <- data.frame(newData.in()) 
newData.pred <- predict.lm(abss, newData) 

plot(abs,conc) 
abline(abss)

segments(newData , 0, newData, newData.pred, col = "red")
 # segments(0, newData.pred[i], clusters()$centers, newData.pred[i], col = i)

  })

})

您的 renderPlot 中不需要 reactive,该功能已经 reactive

predict.lm 在您的输入中未找到任何引发第一个警告的列名称 abs

segments 将坐标作为参数,您输入了一个 data.frame 来解释第二个错误。

你可以这样做:

 output$plot1 <- renderPlot({   
    newData <- data.frame(abs=input$clusters) 
    newData.pred <- predict.lm(abss, newData) 
    abline(abss)   
    segments(newData$abs , 0, newData$abs, newData.pred, col = "red")

  })

此外,您可能想要更改图的 xlim 或输入的起始值,因为 0.1 不在图上