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。如果您手动输入网址,请检查您的拼写并重试