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
不在图上
非常基本的 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
不在图上