R闪亮,找不到对象'输入'。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R闪亮,找不到对象'输入'。相关的知识,希望对你有一定的参考价值。

我得到了这个错误。...stacktraceon...( : 未找到对象'input'。如果api keyurl的格式没有输入,这段代码可以正常工作。我相信错误在第25行和第27行,那里的input$apikey被切换了,或者说闪亮的应用程序没有这些开始的值。

这个应用的目标是把用户输入的api键和timevis一起很好地显示在日程表上。我试着把api调用和数据清洗放在服务器功能下面,但这并不奏效。我很感激任何帮助。

library(shiny)
library(httr)
library(jsonlite)
library(lubridate)
library(tools)
library(timevis)

# Define UI for application 
ui <- fluidPage(

    # Application title
    titlePanel("User Schedule"),
    # Input API INFo
    textInput(inputId = "apikey1", label = h3("API Key"), value = "enterkey"),
    textInput(inputId = "userkey1", label = h3("USER EMAIL"), value = "enteremail"),
    submitButton("Update View", icon("refresh")),
    hr(),
    timevisOutput("timeline"))

#Make API call and prepare Timeline information
options(stringsAsFactors = FALSE)

apikey2 <- input$apikey1

userkey2 <- input$userkey1

master_url <- sprintf("https://%s?api_key= %s",userkey2,apikey2)

my_url <- master_url

my_raw_result <- httr::GET(my_url)

my_raw_result

my_raw_result_text <- content(my_raw_result, "text")

my_raw_result_json <- fromJSON(my_raw_result_text, flatten = TRUE)

my_raw_result_df <- as.data.frame(my_raw_result_json)

dt <-  my_raw_result_df

dt[dt==""] <- NA # Replace all blank to NA
dt$start <- as.Date(as.character(dt$Schedule.item.date, 1,10)) # reformat the date field to my preferred format
dt$end <- NA
dt$content <- as.character(dt$schedule.item.type) # formate the content as text characters


# Define server logic required to draw time line
server <- function(input, output) 
    output$timeline <- renderTimevis(timevis(dt))



# Run the application 
shinyApp(ui = ui, server = server)

答案

正如 @r2evans 所说,你的代码创建了 dt 在外 server 函数,所以它在全局环境中。变量 input 那里不存在。 所以,把代码从 options(stringsAsFactors = FALSE)dt$content <- as.character(dt$schedule.item.type) 里面 server 功能。 这将使您可以访问 input.

这回答了你的问题,但你还有更多的事情要做。

  • input 只有在活动上下文中才能访问,所以你必须将你的初始化代码封装在 observe() 或类似。
  • 你需要防止 renderTimevis() 以免因输入错误而出错。 类似于。
    output$timeline <- renderTimevis(
        req(input$apikey1, input$userkey1)
        if (is.data.frame(dt)) timevis(dt)
      )
  • 你可以考虑使用 placeholder= 而非 value= 在你textInput为您的用户提供初步指导。
  • 你需要修改你的初始化代码,以防止在启动时因为缺少值而出错。 类似这样的代码。
observe(
    req(input$apikey1, input$userkey2)
    <... your initialisation code  ...>
  )

至少能让你的应用程序的GUI显示出来。

以上是关于R闪亮,找不到对象'输入'。的主要内容,如果未能解决你的问题,请参考以下文章

Modelsim错误:找不到匹配'/ test / *'的对象

找不到'number'类型的不同支持对象'33 .265625'

R中读取文件,找不到路径问题 No such file or directory

找不到对象!在此服务器上找不到请求的 URL。如果您手动输入网址,请检查您的拼写并重试

Angular 9 - 找不到一个不同的支持对象'getData()

怎么找不到<Python核心编程>的习题答案