shiny用法整理(二)

栏目: R语言 · 发布时间: 6年前

内容简介:继续整理shiny的几个用法DT包可以说是shiny网页展示表格的首选(个人觉得哈),其功能丰富,是JS的DataTables库的R端口,功能非常强强大,简单的使用即可满足常用的需求,如:其中

继续整理shiny的几个用法

DataTables in a Shiny App

DT包可以说是shiny网页展示表格的首选(个人觉得哈),其功能丰富,是JS的DataTables库的R端口,功能非常强强大,简单的使用即可满足常用的需求,如:

library(DT)

ui <- basicPage(
  h2("The mtcars data"),
  DT::dataTableOutput("mytable")
)

server <- function(input, output) {
  output$mytable = DT::renderDataTable({
    mtcars
  })
}

shinyApp(ui, server)

其中 DT::dataTableOutput 可用 DTOutput 代替,同时 DT::renderDataTable 需要改用 renderDT ,后者更加符合shiny的代码风格

详细的功能,我之前也做过DT包的使用笔记Learning DT包,只能说一句:非常好用!

官方手册: DT: An R interface to the DataTables library

upload files

作为一个主打交互网站的shiny,有一个让用户输入文件的接头是必须的,这可以用 fileInput 函数,UI端如下:

fileInput(inputId = "file", label = "File Input:", 
      accept = c("text/plain",
                 ".txt"))

对输入文件的格式要求主要看accept参数,其对应的是MIME类型,常见的有:

  • 普通文本:.txt,text/plain
  • csv文本:.csv,text/csv
  • GIF:.gif,image/gif

对应的server端,如下:

infile <- input$file
data <- read.table(infile$datapath, sep = "\t", header = T, stringsAsFactors = F)

Shiny HTML Tags Glossary

HTML相比不陌生,写网页必备;shiny身为一个网页可视化工具,其也是兼容HTML语法的,所以你想在网页上添加一些HTML标签的话只需要用HTML语法就行;但是shiny作者为了让HTML标签让不懂html的人能以R的角度来理解,将其全部改写为了R函数形式了。。。

如要写个h1标题,HTML标签: <h1>My header</h1> ,而shiny函数则是: tags$h1("My header")

tags函数包含了110个HTML标签,如用 names(tags) 查看,如:

> head(names(tags))
[1] "a"       "abbr"    "address" "area"    "article" "aside"

几个比较实用的有:

  1. 链接网站:

    tags$a(href="www.rstudio.com", "Click here!")
    <a href="www.rstudio.com">Click here!</a>
  2. 添加文字:

    tags$p("First paragraph")
    <p>First paragraph</p>
  3. 添加图片

    tags$img(src = "www.rstudio.com", width = "100px", height = "100px")
    <img src="www.rstudio.com" width="100px" height="100px"/>

而且还可以像HTML那样添加子元素,如:

tags$div(class = "header", checked = NA,
  tags$p("Ready to take the Shiny tutorial? If so"),
  tags$a(href = "shiny.rstudio.com/tutorial", "Click Here!")
)
<div class="header" checked>
   <p>Ready to take the Shiny tutorial? If so</p>
   <a href="shiny.rstudio.com/tutorial">Click Here!</a>
</div>

但是说真的,我还是觉得用HTML原生态的比较好,至少资料多。。。

Download data

比如我们通过shiny网页小程序将输入的数据通过一定的处理后产生结果文件,这时我们需要将这部分的数据弄一个可选择的按钮之类

首先一般会使用 downloadButton("downloadData", "Download") 来在UI界面上形成一个下载按钮

接着就是用server中用代码将你所需要的数据/图片等输出了,这里的写法比较固定化(刚接触的话最好按照模板修改,不然会失败,被坑过。。。)

output$downloadData <- downloadHandler(
    filename = function() {
      paste(input$dataset, ".csv", sep = "")
    },
    content = function(file) {
      write.csv(datasetInput(), file, row.names = FALSE)
    }
  )

这里需要分成两部分写, filename = function(){} 确定要输出的文件格式和文件名, content = function(file){} 确定输出文件的内容(可以是图片,也可以是表格等),必须要有这两部分哦

还可以在 downloadHandler 函数中设定输出文件格式,如: image/pngtext/csv

除了常见的图片png,表格txt外,还有一些需要借助的包才能输出的格式,如xlsx等也可以在shiny中输出的,如我之前想用openxlsx包来输出的xlsx表格:

output$download <- downloadHandler(
  filename = function(){
    "ouput.xlsx"
  },
  content = function(file) {
    fname <- paste(file,"xlsx",sep=".")

    wb <- createWorkbook()
    createSheet(wb,"sheet1")
    writeWorksheet(wb,data = res,sheet = "sheet1")
    saveWorkbook(wb, file)
  }
)

这两篇shiny用法整理笔记,以上均来自于 http://shiny.rstudio.com/articles/ 中比较常用的用法笔记,shiny团队将近几年的shiny文档均整理下一起了,不定时的阅读下,或者有需要的时候去翻下都是不错的选择

本文出自于 http://www.bioinfo-scrounger.com 转载请注明出处


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Professional JavaScript for Web Developers

Professional JavaScript for Web Developers

Nicholas C. Zakas / Wrox / 2009-1-14 / USD 49.99

This eagerly anticipated update to the breakout book on JavaScript offers you an in-depth look at the numerous advances to the techniques and technology of the JavaScript language. You'll see why Java......一起来看看 《Professional JavaScript for Web Developers》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具