我试图将反应数据传递给updateSelectizeInput但出现以下错误:
.getReactiveEnvironment()$currentContext() 中的错误:如果没有活动的反应式上下文,则不允许进行操作。(您试图做一些只能从反应式表达式或观察者内部完成的事情。)
我的代码如下:
ui.R
library(shiny)
ui_panel <-
tabPanel("Text Input Test",
sidebarLayout(
sidebarPanel(
selectizeInput('Organisations', label = "Organisation Search",
choices = NULL, options = list(
placeholder = 'Type the organisation name', maxOptions = 10,
maxItems = 1, searchConjunction = 'and')),
tags$style(type="text/css",
".selectize-input::after{visibility:hidden;};"
),
br(),
selectInput(
inputId="selectData",
label=" ",
choices=c("Universities", "Hospitals")
),
br()
),
mainPanel(
tabsetPanel(
tabPanel("output of Organisation search
details",htmlOutput("orgsearchdetails"))
)
)
))
ui <- shinyUI(navbarPage(" ",ui_panel))
Run Code Online (Sandbox Code Playgroud)
服务器R
library(shiny)
shinyServer(
function(input, output, session) {
orgdata <- reactive({if(input$selectData=='Universities'){
orgdata <- …Run Code Online (Sandbox Code Playgroud) 我正在构建一个应用程序,允许用户使用 selectInput 在绘图图上动态添加和删除跟踪。
我试图从 plotly 包中使用 plotlyProxy () 和 plotlyProxyInvoke () ,但无济于事。
以下是我的基本代码:
library(shiny)
library(shinydashboard)
library(plotly)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
sidebarMenu(
menuItem("Search", tabName = "Tabs", icon = icon("object-ungroup"))
)
),
dashboardBody(
tabItem(tabName = "Tabs",
fluidRow(
column(width=3,
box(
title="SELECT ",
solidHeader=TRUE,
collapsible=TRUE,
width=NULL,
selectInput(
inputId="Player",
selected = NULL, multiple = TRUE,
label=" Choose Player",
choices=c("Messi", "Suarez", "Ronaldo" )),
selectInput(
inputId="Delete",
selected = NULL, multiple = TRUE,
label=" Choose Player",
choices=c("Messi", "Suarez", "Ronaldo" )),
submitButton("Select")
)
),
column( width=9,
tabBox(
width="100%", …Run Code Online (Sandbox Code Playgroud) 我有类似于以下数据:
df=data.frame(
company=c("McD","McD","McD","KFC","KFC"),
Title=c("Crew Member","Manager","Trainer","Crew Member","Manager"),
Manhours=c(12,NA,5,13,10)
)
df
Run Code Online (Sandbox Code Playgroud)
我希望操纵它并获得如下数据框:
df=data.frame(
company=c("KFC", "McD"),
Manager=c(1,1),
Surbodinate=c(1,2),
TotalEmp=c(2,3),
TotalHours=c(23,17)
)
Run Code Online (Sandbox Code Playgroud)
我设法对员工及其人数进行了如下分类:
df<- df %>%
mutate(Role = if_else((Title=="Manager" ),
"Manager","Surbodinate"))%>%
count(company, Role) %>%
spread(Role, n, fill=0)%>%
as.data.frame() %>%
mutate(TotalEmp= select(., Manager:Surbodinate) %>%
apply(1, sum, na.rm=TRUE))
Run Code Online (Sandbox Code Playgroud)
另外,我将工时总结如下:
df <- df %>%group_by(company) %>%
summarize(TotalHours = sum(Manhours, na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)
我如何同时将这两个步骤结合在一起,或者有一种更干净/更简单的方式来获得所需的输出?