如何在 R闪亮中显示多个.xpt文件并根据它们的列过滤它们?

2024-01-08

当我尝试上传多个 .xpt 文件以在 R闪亮应用程序的主面板中显示表格时,它给我带来了以下问题。

我也在寻找过滤选项。我想在上传多个文件时按列进行过滤,以便在每个数据框/数据表的主面板中显示适当的行。

Error: Warning: Error in This kind of input is not handled

有人可以帮我解决问题吗?

code:

library(shiny)
library(haven)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      fileInput("file1", "Choose CSV File", multiple = TRUE,
                accept = c(
                  "text/csv",
                  "text/comma-separated-values,text/plain",
                  ".csv", ".xpt")
      ),
      tags$hr(),
      checkboxInput("header", "Header", TRUE)
    ),
    mainPanel(
      tableOutput("contents")
    )
  )
)

server <- function(input, output) {
  # output$contents <- renderTable({
  #   # input$file1 will be NULL initially. After the user selects
  #   # and uploads a file, it will be a data frame with 'name',
  #   # 'size', 'type', and 'datapath' columns. The 'datapath'
  #   # column will contain the local filenames where the data can
  #   # be found.
  #   inFile <- input$file1
  #   
  #   if (is.null(inFile))
  #     return(NULL)
  #   
  #   read.csv(inFile$datapath, header = input$header)
  # })
  
  output$contents <- renderTable({
    # input$file1 will be NULL initially. After the user selects
    # and uploads a file, it will be a data frame with 'name',
    # 'size', 'type', and 'datapath' columns. The 'datapath'
    # column will contain the local filenames where the data can
    # be found.
    inFile <- input$file1
    
    if (is.null(inFile))
      return(NULL)
    
    read_xpt(inFile$datapath) 
  })
  
}

shinyApp(ui, server)

Xpt1:

STUDYID   DOMAIN    CR_VALUE
1           CR        1.5
2           CR        1.5
3           CR        1.5

Xpt2:

STUDYID   DOMAIN    CM_VALUE
1           CM        1.5
2           CM        1.8
3           CR        1.9

使用值 1.9 进行过滤后,这是预期的输出。

3           CR        1.9

上传多个文件时应用程序开始失败的原因是inFile$datapath不再是单一值。现在它包含与每个文件对应的多个数据路径。

下面是一个示例应用程序,允许用户上传多个 .xpt 文件并选择要在表格上显示的文件。

library(shiny)
library(haven)
library(stringr)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      fileInput("file1", "Choose CSV File",
        multiple = TRUE,
        accept = c(
          "text/csv",
          "text/comma-separated-values,text/plain",
          ".csv", ".xpt"
        )
      ),
      tags$hr(),
      checkboxInput("header", "Header", TRUE),
      uiOutput("files_available")
    ),
    mainPanel(
      tableOutput("contents")
    )
  )
)

server <- function(input, output) {
  output$files_available <- renderUI({
    req(input$file1)
    selectInput("name", str_to_title("select which file to show"), choices = input$file1$name)
  })

  df <- reactive({
    req(input$name)
    read_xpt(input$file1$datapath[[which(input$file1$name == input$name)]])
  })

  output$contents <- renderTable({
    df()
  })
}

shinyApp(ui, server)

编辑:带有过滤器的应用程序:

library(shiny)
library(haven)
library(stringr)
library(shinyWidgets)
library(tidyverse)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      fileInput("file1", "Choose CSV File",
        multiple = TRUE,
        accept = c(
          "text/csv",
          "text/comma-separated-values,text/plain",
          ".csv", ".xpt"
        )
      ),
      tags$hr(),
      checkboxInput("header", "Header", TRUE),
      uiOutput("files_available"),
      uiOutput("filters")
    ),
    mainPanel(
      uiOutput("tables")
    )
  )
)

server <- function(input, output) {
  nms <- reactiveVal(NULL)

  suffixes <- c("STUDYID", "DOMAIN", "VALUE")

  df <- reactive({
    req(input$file1)
    input$file1$datapath %>%
      map(~ read_xpt(.x))
  })

  # for debugging
  observe({
    print(df())
    # print(nms())
    # print(map(names(input), ~input[[.x]]))
  })


  observeEvent(df(), {
    nms(map(df(), names))
  })

  output$filters <- renderUI({
    req(df())
    inpts <- tagList(
      numericInput("STUDYID", "STUDYID", value = NA),
      textInput("DOMAIN", "DOMAIN", value = ""),
      numericInput("VALUE", "VALUE", value = NA)
    )
  })

  output$tables <- renderUI({
    req(df())
    map(1:length(df()), ~ tableOutput(str_c("table", .x)))
  })

  observeEvent(c(input$STUDYID, input$DOMAIN, input$VALUE), {
    df <- df()
    # df contains multiple dataframes so we need to loop through each of them to create the render functions
    walk(1:length(df), ~ {
      output[[str_c("table", .x)]] <<- renderTable({
        cur_df <- df[[.x]]
        nms <- nms()[[.x]]
        nms <- map(suffixes, ~ str_subset(nms, .)) # to order the correct column names with the required input. Warning, if more than one name matches the suffix is not tested
        # first we look if the input is character type and force a NA value on it, if it's not we just look for NA.
        # If the input is not NA (meaning that is has a value inserted by the user), then filter the table by that value.
        walk2(nms, suffixes, ~ {
          if (class(input[[.y]]) == "character") {
            if (input[[.y]] == "") {
              input_value <- NA
            } else {
              input_value <- input[[.y]]
            }
          } else {
            input_value <- input[[.y]]
          } # empty textInput's show has an empty string value instead of NA
          print(input_value)
          if (!is.na(input_value)) {
            cur_df <<- cur_df %>% filter(.data[[.x]] == input[[.y]])
          }
        })
        cur_df
      })
    })
  })
}

shinyApp(ui, server)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 R闪亮中显示多个.xpt文件并根据它们的列过滤它们? 的相关文章

  • 查找数据帧列表中同一列中的所有重复值并将其转换为 NULL

    我有一个清单BELGIAN COAST list包含数百个数据帧 df1 df2 15 列 X 1000 行 每个数据帧的最后一列称为Chemicals并包含一些字符 例如Sulfate or Ammonia 但是这一列有很多行Chemic
  • 如何获得属于五分位数的x?

    我正在大学学习使用 R 进行计量经济学项目 所以请原谅我的笨拙 基本上 使用并给出 一个矩阵 股票价格 行 天 列 公司股票价格 另一个矩阵 市值 行 天 列 公司市值 我必须收集第三个矩阵每天观察的属于市值分布第一五分位数的股票价格 然后
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • R.matlab/readMat:readTag(this) 中出错

    我正在尝试使用 R matlab 将 matlab 文件读入 R 但遇到此错误 require R matlab r lt readMat file mat verbose T Trying to read MAT v5 file stre
  • 将 VLMC 拟合到很长的序列

    我正在尝试将 VLMC 拟合到最长序列为 296 个状态的数据集 我这样做如下所示 Load libraries library PST library RCurl library TraMineR Load and transform d
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • R 编程:如何计算数据框中两个单元格之间的差异并将它们保存在新列中

    尝试学习 R 并陷入自相关示例中 我想将 x 的差异与 y 的差异进行回归 我在数据框中有 x 和 y 并且希望将 x2 x1 的差值保存在新列 例如 dx 中 我不知道该怎么做 我拥有的 data1 x y 5 3 8 9 3 1 1 5
  • 根据另一列中的键累积一列中的值时出现问题

    我有一个看起来像这样的数据框 我需要使用 PROJ ID 列中的字符串创建一个新的值列 并形成 PROJ NAME 列中的值字符串 这里提供的解决方案 根据 r 中另一列的键累积一列中的值 https stackoverflow com q
  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 比较 R 中的两个字符向量

    我有两个 ID 字符向量 我想比较这两个字符向量 特别是我对以下数字感兴趣 A和B各有多少个ID 有多少个ID在A中但不在B中 有多少个ID在B但不在A 我还想画维恩图 以下是一些可以尝试的基础知识 gt A c Dog Cat Mouse
  • 如何将此“for”循环转换为向量解

    这个问题与 将嵌入其他文本的长州名称转换为两个字母的州缩写 https stackoverflow com questions 25582518 convert long state names embedded with other te
  • R 中的字符串作为函数参数

    数据框chocolates列出了糖果的类型以及每种糖果的一组评级 ID sweetness filling crash snickers 0 67 0 55 0 40 milky way 0 81 0 53 0 56 我正在编写一个函数 它
  • 替换字符串/文本中“从第 n 次到最后一次”出现的单词

    这个问题以前曾被问过 但尚未得到令提问者满意的答案 https stackoverflow com questions 36368712 how to use stringrs replace all function to replace
  • 如何从shiny中将数据下载到多张纸上?

    我们如何将数据从 Shiny 下载到多个工作表并命名每个工作表 例如下面 ginberg将mtcars数据保存在sheet1中 我们可以将头部 mtcars 保存在sheet2中吗 另外 我们可以对这些工作表进行不同的命名吗 例如sheet
  • 如何从R arrow中的feather文件中读取列名和元数据?

    现已取代 独立R 的羽毛库 https github com wesm feather有一个函数叫做feather metadata 允许从磁盘上的羽毛文件中读取列名称和类型 而无需打开它们 当在 R 中加载羽毛文件时 这对于仅选择特定列很
  • 为什么 \K 似乎消耗了基本 R 的 gsub 中的一个字符

    这是一个示例字符串 bcadefgh 我希望我能匹配除了 cad 具有以下模式 wa w K w 如果我想替换所有不是的东西 cad 我可以用gsub 像这样gsub wa w K w bcadefgh perl TRUE 但是这输出 ca
  • 如何修改秤包生成的标签?

    所以我正在制作金字塔可视化 我在用着scale y continuous labels scales label number si accuracy 0 1 来生产标签 但是 我想去掉图表女性部分的负号 我认为保留 SI 后缀但删除负号的
  • 在 R 中使用 nls 重新创建研究

    我正在学习如何在 R 中使用 nls 函数 但遇到了一些问题 我现在只是试图重新创建研究论文中发现的曲线 该模型拟合了 1987 年崩盘前股市走势的曲线 我定义了一个函数func 如下 func lt function a b tc t a
  • R 包与 Rcpp 的链接错误:“未定义符号:LAPACKE_dgels”

    我正在创建一个 R 包 lapacker 以使用 R API 头文件 R ext Lapack h 为 R 提供和使用的内部 LAPACK 库 仅具有双精度和双复数 提供 C 接口 源代码 https github com ypan1988
  • 基于条件反应逻辑闪亮的 Flexdashboard

    我正在尝试有条件地进行一种类型的渲染 renderPlot 或其他 renderText 基于一些输入 这是我尝试过的 title Citation Extraction output flexdashboard flex dashboar

随机推荐

  • 如何获取正在运行的占用 100% cpu 的 java 程序的完整堆栈跟踪?

    我确实有一个詹金斯实例 它陷入某种无限循环中 没有任何可见的活动 我可以得到pid那么如何生成可用于错误报告的跟踪呢 我在linux上运行 尝试用jstack http download oracle com javase 1 5 0 do
  • 从 Illuminate\Html 切换到 Collective\Html,未找到类“Illuminate\Html\HtmlServiceProvider”

    我更新了composer json删除照亮 html并添加 require laravelcollective html 5 1 我从中删除了提供者 别名app php对于 Illuminate Html 并添加了替换项 Collectiv
  • 如何通过 moment.js 获取最近的日期?

    日期列表 const datesToBeChecked 2020 07 06 2020 07 13 2020 07 20 检查日期 const dateToCheckFor 2020 07 07 如何使用 moment js 获取日期数组中
  • PHP 字符串转整数异常

    我在 HackerRank 上遇到一个问题 第 16 天 异常 字符串到整数 https www hackerrank com challenges 30 exceptions string to integer 简而言之任务是 读取一个字
  • Laravel 将 http 添加到 url

    Laravel 5 0 中是否有一个助手可以自动将 http 添加到没有它的 url 中 这与 codeigniter 类似prep url可以找到的here https ellislab com codeigniter user guid
  • 如何在 JavaScript 中动态创建 HTML 页面

    是否可以用 JavaScript 动态创建完整的 HTML 页面 基本上 我正在创建一个 HTML 编辑器在浏览器中我想要做的是将 HTML 代码放在屏幕顶部的文本区域中 并在屏幕底部的 HTML 页面预览中 问题是它不仅仅是小的 HTML
  • C# JSON 自定义序列化

    有没有一种方法 库允许我自定义类似于 GSON 自定义序列化器的 JSON 序列化 这是我想要得到的 这个对象 KeyValuePair 年龄 10 myAge 通常会被序列化为 我的年龄 关键 年龄 价值 10 虽然我希望它像这样序列化
  • 矢量与圆锥的交点

    我有一个向量A定义为 Ao t Ad 我还有一个带有顶点的圆锥体 圆锥尖 V 轴方向D 基半径R和身高H 如何找到向量和圆锥之间的交点 我正在使用 glm 进行数学计算 Here s a simple illustration 我没有处理光
  • 按频率对 Javascript 数组进行排序,然后过滤重复项

    获取 javascript 数组 按值的频率排序 然后过滤唯一值的优雅方法是什么 So apples oranges oranges oranges bananas bananas oranges becomes oranges banan
  • 关注有值的输入字段

    我专注于 jQuery 的输入字段 input text focus 输入字段中已有一些文本值 当我聚焦时 光标在最后一个字母之后闪烁 我如何将光标放在第一个字母之前 你可以使用我为你创建的这个小插件 修改自这个脚本 http blog v
  • 如何在CoordinatorLayout中的Viewpager下面获取Adview

    此刻AdView出现在里面ViewPager所以它会阻止应用程序中的内容 我怎样才能得到AdView出现在下面ViewPager而不是在里面 我试过把AdView in a RelativeLayout以下ViewPager但随后AdVie
  • 具有 CRUD 方法的类违反了单一职责原则?

    我试图理解单一责任原则 我有以下问题 单一职责原则 SRP 规定 永远不应该 班级变更的原因不止一个 通常我们的Resource Service和Repository类有 创建 读取 更新和删除方法 我们正在将每个班级更改为 修改任何这些操
  • BigQuery 下载或导出为 JSON 不考虑类型

    我在 BigQuery 中运行的查询 SELECT 5 as a 当我运行上述查询并选择时得到的架构另存为表格 当我将查询结果下载为 JSON 时得到的 JSONor当我导出表时 a 5 这不应该是 a 5 From 导出表数据 导出限制
  • C# Mysql - 在异步等待服务器的数据库查询上使用锁

    I have TcpListener类和我正在使用async await读写 对于该服务器 我创建了单个数据库实例 在其中准备了所有数据库查询 但对于不止一个TcpClient我不断遇到异常 类型异常MySql Data MySqlClie
  • 找不到模块“file-name.png”或其相应的类型声明 - Typescript React

    我正在尝试在我的打字稿反应项目中导入一个 png 如下所示 import logo from assets Logo svg 我收到了这个 TS 错误 Cannot find module assets Logo svg or its co
  • 为什么 Meteor 抱怨集合的插入方法已经定义了?

    谁能告诉我为什么下面的代码会抛出以下错误 Error A method named players insert is already defined 我是 Meteor 和 Coffeescript 的新手 所以我可能会忽略一些简单的东西
  • 在 Matlab 中使用单个校准图像校正镜头畸变

    我想纠正一系列图像的镜头畸变 所有图像都是用固定在适当位置的相机拍摄的 并且还可以使用同一设置的棋盘图像 检测到扭曲的棋盘图像的角点后 我想计算径向扭曲系数 以便我可以校正图像 类似于估计相机参数 http www mathworks co
  • 检测设备是否有 GPS

    如何检测GPS是否可用 iPod touch 和 iPad WiFi 版本没有 GPS 它们有基于 WiFi 的其他功能 无论如何 如何知道 GPS 是否可用 或者如何检测 iPod Touch 或 iPad Wifi 型号 这是 iOS
  • 无法从源 Pylance 解析导入“flask”(reportMissingModuleSource)

    当我写作时 from flask import Flask 一条黄线即将出现flask并说明无法从源 Pylance 解析导入 flask reportMissingModuleSource 另外 我也能够成功地使用这个包完成工作 但问题是
  • 如何在 R闪亮中显示多个.xpt文件并根据它们的列过滤它们?

    当我尝试上传多个 xpt 文件以在 R闪亮应用程序的主面板中显示表格时 它给我带来了以下问题 我也在寻找过滤选项 我想在上传多个文件时按列进行过滤 以便在每个数据框 数据表的主面板中显示适当的行 Error Warning Error in