gpt4 book ai didi

R Shiny 模块 - 无法将类型 'closure' 强制转换为字符类型的向量

转载 作者:行者123 更新时间:2023-12-04 23:38:49 29 4
gpt4 key购买 nike

Shiny 模块环境的新手,我正在尝试通过设置基本脚手架来将 UI 的选项卡式组件和其他组件与 ui.r 和 server.r 分开

目前我有以下4个文件:

ui.r

navbarPage(id = "main", windowTitle = "Dashboard Title", position = 
"fixed-top", header = "Header Text?", title = "Application Logo <To Do>",

navbarMenu("Company Dashboards", icon = icon("dashboard"),

tabPanel(title = "Sales", value = "SalesModule", icon = icon("bar-chart-o"), salesModuleUI("SalesModule")))

server.r

shinyServer(function(input, output, session){


### Modules
callModule(module = salesModule, id = "SalesModule")


})

global.r

#######
# Libraries
#######

library(shiny)
library(shinydashboard)
library(dplyr)
library(highcharter)
library(DT)


#######
# Source Files
#######

source("modules/salesModule.r")

salesModule.r

salesModuleUI <- function(id){

ns <- NS(id)

}


######
# salesDashboard Server
######

salesModule <- function(input,output,session){

ns <- session$ns

}

如果我从 ui.r 中删除“value = salesModule”和 salesModuleUI 调用,应用程序加载正常。一旦我添加这些以使用 salesModuleUI 填充选项卡面板(任何一个 UI 现在应该是空的),我就会收到错误消息:

Warning: Error in as.character: cannot coerce type 'closure' to vector of type 'character'

我尝试查看:r shiny error Error in as.vector(x, "character") : cannot coerce type 'closure' to vector of type 'character'

但这个问题似乎与代码中的 react 性调用有关,我还没有为此添加 react 性。我还评论了:https://github.com/FrissAnalytics/shinyJsTutorials

还有他的代码,这是此设置的结构的来源。

强制转换问题似乎相当普遍,修复围绕着传递的数据类型和期望。但是,从我可以排除故障的角度来看,代码应该期待一个字符向量,而我正在传递一个字符向量。

关于我哪里出错的想法?​​

最佳答案

问题是您的模块的 UI 部分返回命名空间函数(不可见)。因此,shiny 尝试将函数(类型:闭包)嵌入到您的 UI 代码(类型:character**)中,这会导致上述错误消息。

Error in as.character: cannot coerce type 'closure' to vector of type 'character'

如果您将模块 ui 的定义更改为

salesModuleUI <- function(id) {
ns <- NS(id)
return(NULL)
}

错误消失了,因为 NULL 可以嵌入 Shiny 的 UI 定义中。这是一个使用上述 UI 的最小应用。

shinyApp(
ui = fluidPage(
salesModuleUI("moduleId")
),
server = function(input, output, session) {}
)

** 实际上, Shiny 的 UI 有自己的类,称为 shiny.tag,它可以是 listcharacter 类型,具体取决于用例.但是,当 shiny 将 R 对象转换为 shiny.tag 对象时,它依赖于 as.character 泛型。

关于R Shiny 模块 - 无法将类型 'closure' 强制转换为字符类型的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53905943/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com