You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Shiny应用响应式数据传递至RStudio脚本并替换子应用输入

实现Shiny应用间的响应式数据传递

1. 修改初始Shiny应用代码

调整数据读取逻辑,并在触发第二个应用时,将上传的数据集和选中的目标列保存为临时文件,供后续脚本读取:

library(shiny)
library(shinyML)
library(readxl)
library(tools)

# Define UI for data upload app ----
ui <- fluidPage(
  
  # App title ----
  titlePanel("Uploading Files"),
  
  # Sidebar layout with input and output definitions ----
  sidebarLayout(
    
    # Sidebar panel for inputs ----
    sidebarPanel(
      fileInput("file1", "Upload File", multiple = FALSE, accept = c(".csv", ".xlsx", ".xls")),
      uiOutput("select"),
      actionButton("launch_app", "Launch second Shiny App")
      
    ),
    
    # Main panel for displaying outputs ----
    mainPanel()
    
  )
)

# Define server logic to read selected file ----
server <- function(input, output) {
  
  file_info <- reactive({
    req(input$file1)
    # 根据文件后缀读取对应格式的数据
    ext <- tools::file_ext(input$file1$name)
    switch(ext,
           csv = read.csv(input$file1$datapath),
           xlsx = readxl::read_excel(input$file1$datapath),
           xls = readxl::read_excel(input$file1$datapath),
           stop("仅支持csv/xlsx/xls格式文件"))
  })
  
  output$select <- renderUI({
    req(input$file1)
    selectInput("sel", "Select target column", 
                choices = colnames(file_info()),
                selected = colnames(file_info())[1],
                multiple = FALSE)
  })
  
  observeEvent(input$launch_app, {
    # 将数据集和选中的目标列保存为临时RDS文件
    saveRDS(list(data = file_info(), target_col = input$sel), 
            file = "temp_data.RDS")
    # 调用外部脚本
    rstudioapi::jobRunScript(path = "C:/Users/User/Documents/Deniz3/script.r")
  })
}

# Create Shiny app ----
shinyApp(ui, server)

2. 修改script.r脚本

读取初始应用保存的临时数据,替换原有的固定数据集和列名:

library(shinyML)
# 读取初始应用传递的数据集和目标列
data_obj <- readRDS("temp_data.RDS")
# 调用shinyML分类应用,使用传递的动态数据
shinyML_classification(data = data_obj$data, y = data_obj$target_col, framework = "h2o")

3. 保留SHINYML.R脚本(无需修改)

该脚本包含shinyML_classification函数的实现,保持原有逻辑即可。


内容的提问来源于stack exchange,提问作者firmo23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 06:00:26