R闪亮没有正确使用用户输入

时间:2015-02-26 12:20:20

标签: r shiny

非常基本的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)

  })

})

1 个答案:

答案 0 :(得分:1)

reactive中不需要renderPlot,该功能已经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