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