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 转载请注明出处


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

查看所有标签

猜你喜欢:

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

Types and Programming Languages

Types and Programming Languages

Benjamin C. Pierce / The MIT Press / 2002-2-1 / USD 95.00

A type system is a syntactic method for automatically checking the absence of certain erroneous behaviors by classifying program phrases according to the kinds of values they compute. The study of typ......一起来看看 《Types and Programming Languages》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具