英文:
Shiny app error when running in app in the project root folder
问题
当我尝试在项目根目录中运行忠诚演示Shiny应用程序时,出现错误Error in data$grid : object of type 'closure' is not subsettable
,这是在子目录中使用的代码,与Shiny忠诚应用程序完全无关。然而,如果我从子目录中运行忠诚应用程序,它可以正常运行。在同一个项目中还有其他几个文件夹和脚本。我已经关闭并重新打开了RStudio并删除了历史文件,但仍然出现相同的错误。是否存在某种损坏?
#
# 这是一个Shiny Web应用程序。您可以通过点击上面的“运行应用程序”按钮来运行应用程序。
#
# 了解更多关于使用Shiny构建应用程序的信息:
#
# http://shiny.rstudio.com/
#
library(shiny)
# 定义绘制直方图的应用程序的UI
ui <- fluidPage(
# 应用程序标题
titlePanel("Old Faithful Geyser Data"),
# 侧边栏,用于设置柱数的滑块输入
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"柱数:",
min = 1,
max = 50,
value = 30)
),
# 显示生成的分布图的主面板
mainPanel(
plotOutput("distPlot")
)
)
)
# 定义绘制直方图所需的服务器逻辑
server <- function(input, output) {
output$distPlot <- renderPlot({
# 根据来自ui.R的input$bins生成柱
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins + 1)
# 使用指定数量的柱绘制直方图
hist(x, breaks = bins, col = 'darkgray', border = 'white',
xlab = '等待下次喷发时间(分钟)',
main = '等待时间的直方图')
})
}
# 运行应用程序
shinyApp(ui = ui, server = server)
英文:
When I try to run the faithful demo shiny app in the project root folder I get the error Error in data$grid : object of type 'closure' is not subsettable
which is code used in different script in a sub folder, completely unrelated to the shiny faithful app. However if I run the faithful app from a sub folder it runs correctly. There are several other folders and scripts in the same project. I've closed and re-opened RStudio and deleted the history file but get the same error. Is something corrupt?
#
# This is a Shiny web application. You can run the application by clicking
# the 'Run App' button above.
#
# Find out more about building applications with Shiny here:
#
# http://shiny.rstudio.com/
#
library(shiny)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
output$distPlot <- renderPlot({
# generate bins based on input$bins from ui.R
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins + 1)
# draw the histogram with the specified number of bins
hist(x, breaks = bins, col = 'darkgray', border = 'white',
xlab = 'Waiting time to next eruption (in mins)',
main = 'Histogram of waiting times')
})
}
# Run the application
shinyApp(ui = ui, server = server)
答案1
得分: 0
当Shiny应用程序运行时,它会加载位于./R目录中的所有脚本(相对于应用程序本身),这是一种有用的方式,可以添加额外的函数等来支持您的应用程序(而不会使应用程序文件变得庞大)。如果您不希望加载这些脚本,您可以将应用程序或脚本移动到其他地方,或者首先将auto-load选项设置为false,如之前的问题中所述。
options(shiny.autoload.r = FALSE)
runApp()
英文:
When the shiny app runs, it loads all scripts in the ./R directory (relative to the app itself), which is a useful way to add additional functions etc. to support your app (without making your app files enormous). If you don't want those scripts loaded you will either need to move the app somewhere else or the scripts somewhere else, or first set the auto-load option to false as mentioned in a previous question
options(shiny.autoload.r = FALSE)
runApp()
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论