我很擅长使用Shiny,并且在将反应值添加到现有数据框时遇到一些问题。
我有一个名为CalculatedDistance的反应对象,它可以计算闪亮应用上的输入更改时的距离。我试图将此对象中的计算距离添加到数据框中的新列,但收到以下错误消息:
Error in CalculatedDistance[i] : object of type 'closure' is not subsettable
以下代码正常工作,直到我尝试将值添加到新列。
library('shiny') #allows for the shiny app to be used
alldata <- iris
#adds a column of a unique ID for each row
alldata$ID <- 1:nrow(alldata)
# UI
ui<-fluidPage(
titlePanel("Explorer"),
fluidRow(
wellPanel(
numericInput(inputId = "UserPetalLength", label="Input Petal Length", value = 0, step = 0.1),
numericInput(inputId = "UserPetalWidth", label="Input Petal Width", value = 0, step = 0.1)),
tableOutput('Table')
))
#SERVER
server<-function(input,output,session)
{
CalculatedDistance<- reactive({
calculatedDistance <- sqrt((alldata$Petal.Length-input$UserPetalLength)^2 + (alldata$Petal.Width-input$UserPetalWidth)^2)
})
alldata$distance<- NA
nRows <- nrow(alldata)
for (i in 1:nRows)
{
alldata$distance[i]= CalculatedDistance[i]
}
output$Table = renderTable(alldata)
}
#Run the Shiny App to Display Webpage
shinyApp(ui=ui, server=server)
答案 0 :(得分:0)
这对我有用;我在server
进行了一些更改以使其正常工作。
CalculatedDistance
会返回一个向量,我们可以轻松地将其添加到数据框{}
output$Table
#server.R
shinyServer(function(input,output,session)
{
CalculatedDistance<- reactive({
calculatedDistance <- sqrt((alldata$Petal.Length-input$UserPetalLength)^2 + (alldata$Petal.Width-input$UserPetalWidth)^2)
calculatedDistance
})
add_to_df <- reactive({
alldata$distance<- NA
nRows <- nrow(alldata)
alldata$distance <- CalculatedDistance()
alldata
})
output$Table <- renderTable({
data.table(add_to_df())
})
})