当前位置: 首页 > article >正文

R shiny app | 网页应用 空格分隔的文本文件在线转csv

shiny 能快速把R程序以web app的形式提供出来,方便使用,降低技术使用门槛。

本文提供的示例:把空格分隔的txt文件转为逗号分隔的csv文件。

前置依赖:需要有R环境(v4.2.0),安装shiny包(v1.9.1)。括号内是我使用的版本。

install.packages(“shiny”)

1.运行与效果

  • 文件名:script/app3/app.R
  • 运行: > shiny::runApp(“script/app3/”)
  • 关闭:关闭浏览器。
  1. 左上角:上传文件,
  2. 右侧:预览效果
  3. 右下角:下载csv文件
    在这里插入图片描述

2.文件内容

script/app3/app.R 如下:

library(shiny)
library(bslib)

# Define UI for slider demo app ----
ui <- page_sidebar(
  
  # App title ----
  title = "Blank space txt to csv | v0.0.1",
  
  # Sidebar panel for inputs ----
  sidebar = sidebar(
    
    # Input: Select a file ----
    fileInput(
      "file1",
      "Choose TXT File",
      multiple = TRUE,
      accept = c(
        "text/csv",
        "text/comma-separated-values,text/plain",
        "text/blank-separated-values,text/plain",
        ".csv"
      )
    ),
    
    tags$hr(),
    
    sliderInput(
      "num",
      "show number:",
      min = 2,
      max = 1000,
      value = 10
    ),
    
    # Horizontal line ----
    tags$hr(),
    
    # Input: Checkbox if file has header ----
    checkboxInput("header", "Header", TRUE),
    
    # Input: Select separator ----
    radioButtons(
      "sep",
      "Separator",
      choices = c(
        Comma = ",",
        Semicolon = ";",
        Blank = " ",
        Tab = "\t"
      ),
      selected = " "
    ),
    
    # Input: Select quotes ----
    radioButtons(
      "quote",
      "Quote",
      choices = c(
        None = "",
        "Double Quote" = '"',
        "Single Quote" = "'"
      ),
      selected = ''
    ),
    
    # Horizontal line ----
    tags$hr(),
    
    # Input: Select number of rows to display ----
    radioButtons(
      "disp",
      "Display",
      choices = c(
        Head = "head",
        All = "all"
      ),
      selected = "head"
    ),
    # Button
    downloadButton("downloadData", "Download csv")
  ),
  
  # Output: Data file ----
  tableOutput("contents")
)

# Define server logic to read selected file ----
server <- function(input, output) {
  output$contents <- renderTable({
    # input$file1 will be NULL initially. After the user selects
    # and uploads a file, head of that data file by default,
    # or all rows if selected, will be shown.
    
    req(input$file1)
    
    df <- read.csv(
      input$file1$datapath,
      header = input$header,
      sep = input$sep,
      quote = input$quote
    )
    
    if (input$disp == "head") {
      return(head(df, n=input$num))
    } else {
      return(df, n=input$num)
    }
  })
  
  
  # Downloadable csv of selected dataset ----
  output$downloadData <- downloadHandler(
    filename = function() {
      req(input$file1)
      paste(input$file1$datapath, ".csv", sep = "")
    },
    
    content = function(file) {
      req(input$file1)
      
      df <- read.csv(
        input$file1$datapath,
        header = input$header,
        sep = input$sep,
        quote = input$quote
      )
      write.csv(df, file, row.names = FALSE, quote=F)
    }
  )
}


if(0){
  # show blank separated txt file with header
  runApp("script/app3/")
}


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

Ref

  • https://shiny.posit.co/r/getstarted/shiny-basics/lesson1/

End


http://www.kler.cn/a/468983.html

相关文章:

  • 微信小程序中 “页面” 和 “非页面” 的区别
  • reactor的Hooks.enableAutomaticContextPropagation();不生效解决方案
  • 【Uniapp-Vue3】image媒体组件属性
  • 防止密码爆破debian系统
  • (leetcode算法题)面试题 17.19. 消失的两个数字
  • Laravel操作ElasticSearch
  • Go语言的数据类型
  • 实时数仓: Hudi 表管理、Flink 性能调优或治理工具脚本
  • 微电网运维:保障能源“小宇宙”稳定运行
  • 代码随想录 day 22 回溯算法 part01
  • 自动化立体库安全使用管理制度完整版
  • 计算机网络 (25)IPV6
  • 关于C语言初步的一些基础知识整理(2)
  • 多模态论文笔记——U-ViT
  • AI中的神经元与权重矩阵之间的关系;神经元连接角度看行和列的意义
  • vue el-select封装一个滚动加载更多下拉选项的自定义指令
  • 基于深度学习算法的AI图像视觉检测
  • 如何通过API实现淘宝商品评论数据抓取?item_review获取淘宝商品评论
  • 洛谷 P3000 [USACO10DEC] Cow Calisthenics G
  • 【R 自定义函数总结】投影转换等
  • Three.js教程010:几何体划分顶点组设置不同材质
  • JVM性能排查思路
  • 基于微信小程序投票评选系统的设计与实现ssm+论文源码调试讲解
  • 前端使用fetch、axios提交FormData 后台使用Express fileupload、multer接收数据
  • 安装bert_embedding遇到问题
  • springboot之集成Elasticsearch