Как получить сгенерированные циклом переменные на нескольких выходах в блестящем

Используя данные радужной оболочки, я запускаю цикл в реактивном выражении rshining, чтобы сгенерировать приведенное ниже содержимое переменной видовая_таблица, к которому я хочу получить доступ в последующей функции вывода. Я следовал указаниям в эта ссылка, но при последующем вызове функции вид_функция я получаю сообщение об ошибке, в котором говорится, что видовая_таблица не может быть найден. Как я могу получить содержимое видовая_таблица в функции вывода для отображения в пользовательском интерфейсе?

library(shiny)
data(iris)

ui <- fluidPage(
  
  mainPanel(
    fluidRow(selectInput("portfolio", label = "Select Species", choices = unique(iris$Species))),
    fluidRow(tableOutput("result")))

)

server <- function(input, output) {
  
  species_list <- reactiveValues(a = "setosa", b = "versicolor", c = "virginica")  
  
  species_function <- reactive({  
    species_table <- list()
    for (i in reactiveValuesToList(species_list)){
      local({
        j <- i
        species_table[[reactive({j})()]] <<- iris[iris$Species==reactive({j})(),]  
      })
    }
    
    print(species_table[[input$portfolio]])
    
    return(list(species_table[["setosa"]], species_table[["versicolor"]], species_table[["viginica"]]))
    
  })
  
  output$result <- renderTable({
    
    species_table2 <- list()
    
    for (p in reactiveValuesToList(species_list)){
      local({
        q <- p
        species_table2[[reactive({q})()]] <<- species_function()[[species_table]][[reactive({q})()]][1:5, c("Sepal.Length", "Sepal.Width")]       
      })
    }
    
    print(species_table2[[input$portfolio]])
    return(species_table2[[input$portfolio]])
    
  })
  
}

shinyApp(ui = ui, server = server)
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
18
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш species_table недоступен за пределами реактива, где он определен. Вместо этого верните именованный список, и вы получите желаемый результат. Попробуй это

library(shiny)
data(iris)

ui <- fluidPage(
  
  mainPanel(
    fluidRow(selectInput("portfolio", label = "Select Species", choices = unique(iris$Species))),
    fluidRow(tableOutput("result"))
    )
    
)

server <- function(input, output) {
  
  species_list <- reactiveValues(a = "setosa", b = "versicolor", c = "virginica") 
  
  species_function <- reactive({
    
    species_table <- list()
    for (i in reactiveValuesToList(species_list)){
      local({
        j <- i
        species_table[[j]] <<- iris[iris$Species==j,]
      })
    }

    #print(rv$species_table[[input$portfolio]])

    return(list("setosa" = species_table[["setosa"]],"versicolor" = species_table[["versicolor"]],"virginica" = species_table[["virginica"]]))
    
  })
  
  output$result <- renderTable({
    input$portfolio
    species_table2 <- list()

    for (p in reactiveValuesToList(species_list)){
      local({
        q <- p
        species_table2[[reactive({q})()]] <<- species_function()[[reactive({q})()]][1:5, c("Sepal.Length", "Sepal.Width")]
      })
    }

    print(species_table2[[input$portfolio]])
    return(species_table2[[input$portfolio]])

  })
  
}

shinyApp(ui = ui, server = server)

Другие вопросы по теме