美文网首页learning_R
R markdown笔记02-from bookdown.org

R markdown笔记02-from bookdown.org

作者: ks_c | 来源:发表于2021-01-30 19:32 被阅读0次

    @[toc]( <center>R markdown的笔记02)

    参考 R 数据分析指南与速查手册 第5章内容

    1. R Markdown 可以做什么?

    1. 单篇文档:
      • R分析报告(html_notebook)
      • html/pdf/word_document
      • 仪表盘(flexdashboard::flex_dashboard)
      • PPT(powerpoint_presentation)
    2. 书(bookdown框架):
      HTML版本:gitbook、ctexbook、html_book
    • pdf版本(pdf_book)
    • epub版本(epub_book)
    • 格式和书一样丰富的单篇文档:
      • HTML文档(html_document2)
      • PDF文档(pdf_document2)
      • word文档(word_document2
    1. 网站(bolgdown框架)

    2. 为什么用R_Markdown

    1. 类似jupyter笔记本,将代码和输出结合在一起

    2. 有利于可重复性分析报告(Reproducible reports)。将说明文字、数据、代码、计算结果、可视化图表等结合在一起,其中的计算结果与可视化图表由对应的代码自动生成,而不是先在其他环境中运行代码、保存结果、再将结果复制粘贴到报告中。这就是可重复性分析报告

      • 代码与文字结合,易于解读,排版方便
      • 结果由代码直接生生,利于改动
      • 只要数据源不作假,结果、图表都不可能伪造

    3. 文档总体设置

    YAML代码块:YAML块是Rmd文件最上方进行全局设置的代码块,上下被3个减号包围。不是Markdown语法,而是YAML语法。下面是一个典型的块:

    ---
    title: "name ur titile"
    author: "me"
    date: "2021-1-30"
    
    # 以html输出
    output: 
      html_document:
        theme: cerulean
        toc: true
        # toc_depth: 2
        toc_float:
          true
        number_sections: true
    
    # 以word输出
    output: 
        word_document
     theme: cerulean
        toc: true
        # toc_depth: 2
        toc_float:
          true
        number_sections: true
    ---
    
    
    设置 解释
    title、author、date 文章标题、作者、日期
    output 输出文档格式
    theme 主题设置
    toc 目录

    <font color="blue">上级和下一级之间有两个空格。</font>

    常见格式见标题1
    其他设置见[yihui xie,R Markdown: The Definitive Guide]https://bookdown.org/yihui/rmarkdown/#preface)

    4. 富文本格式

    4.1 普通文本

    直接输入即可。不同模块之间最好用一行空格隔开,以防歧义。

    输出含有中文的PDF时,一般需要有特别的设置:

    如果有中文,LaTex 引擎需要选择为 xelatex,可以通过这张图的方式进行更改:

    小齿轮->output format:PDF
    小齿轮->advanced->LaTeX engine:改为xelatex

    或者在开头输入:

    output:
      pdf_document:
        latex_engine: xelatex
    

    如果中文全部空白,更改LaTex 的配置,用中文字体来渲染(渲染什么意思?):

    outputs:
      pdf_document:
        includes:
          in_header: header.tex
        latex_engine: xelatex
     
    header.tex可以是以下内容
    \usepackage{xeCJK}
    \setCJKmainfont{楷体}  % 字体可以更换
    \setmainfont{Georgia} % 設定英文字型
    \setromanfont{Georgia} % 字型
    \setmonofont{Courier New}
    

    2. 分段

    在两段的代码之间空一行(多敲一次回车)。输出结果会显示合适的段间距,但不会输出一个空行。

    4. 各级标题

    半角的#代表标题,有几个#就是几号标题。级别越多,字体越小。

    一级标题可以不加#,在下表加一行=也表示一级标题。
    二级标题则可以用一行-表示

    1级标题
    ===================================
    任意正文
    
    2级标题
    ------------------------------------
    任意正文
    

    如果全局设置标题为编号的方式,而需要某个标题不编号,则在标题后添加{-}{.unnumbered}即可。

    5.分隔线

    单行3个及以上的减号-,该行没有其他符号,且与上下文本之间有空行分隔,则显示为分隔线。如:

    上一部分文本
    
    ------------------------------------
    
    下一部分文本
    

    二级标题的-上下两行均不存在空行。

    6. RMarkdown 的注释

    文本注释:依然可使用Ctrl+Shift+C的快捷键,其结果为在待注释的文本前添加
    R代码注释:无论是行内代码还是代码块,对于代码正文(不包括前后的斜引号及大括号里面的内容)来说,依然可使用Ctrl+Shift+C的快捷键,其结果与普通R脚本中的注释相同,为在待注释的文本前加井号#,文本注释与R代码注释举例如下:

    这是行内R代码注释r # notes

    这是未被注释的Markdown文本
    <!-- 这是文本注释 -->
    
    # 这是R代码中的文本注释,和R脚本中的文本注释相同
    # a <- "this is the notes of code"
    b <- "this is normal code"  # notes
    

    7. 无序列表

    • 在每一条前面添加减号-或加号+或乘号*,并用空格将该符号与文本分隔,则显示为无序列表。

    • 列表的各条之间如果有空行,间距视为段间距,如果没有空行,间距视为行间距。

    • 三种符号之间可以任意混用。对显示效果没有影响。但建议同一级列表采用同一种符号开头。建议多级列表依次采用减号-、加号+与乘号*开头,超过3级循环使用。

    • 次级列表比上级列表至少多空2个空格或1个Tab键,建议采用空一个Tab的形式。

      • 这是次级列表。
    • 多段列表:

      后面的段落与第一段列表开头对齐,且与前一段之间有空行。

    • 列表中含代码块,列表终止,见pandoc文档 https://pandoc.org/MANUAL.html#pandocs-markdown

    8. 有序列表

    在每一条前面添加一个数字与点,并用空格将该符号与文本分隔,则显示为数字有序列表。

    数字可以是任意非负整数,可以是多位数,且不必按顺序写,可用重复数字,显示的序号从第1条的数字开始编号。

    替代方案有

    • 用英文圆括号将数字括起来开头,符号和文本之间用空格分隔。
    • 数字后面接一个后圆括号,项目符号和文本之间用空格分隔。

    以上两种方式,显示的效果依然为数字加点的形式。

    • 次级数字列表比上级列表至少多空3个空格或2个Tab键,也即项目符号至少和上一级的正文对齐,建议用3个空格的形式。
    • 在每一条前面添加一个小写字母与点,并用至少1个空格将该符号与文本分隔,则显示为小写字母有序列表,显示的序号从第1条的字母开始编号。
    • 在每一条前面添加一个大写字母与点,并用至少2个空格将该符号与文本分隔,则显示为大写字母有序列表,显示的序号从第1条的字母开始编号。
    • 项目符号不能是字母组合,且不必按顺序写。

    10. 斜体

    • 用星号*括起来即可。
    • 也可用下划线_代替星号,但此时前下划线必须与前面的文本之间用空格分隔。
    • 当待加粗的文本本身含有*时,在文本的星号前加上反斜杠即可。

    11. 加粗

    • 用2个星号*括起来即可。
    • 也可以用下划线_代替星号,
      前下划线必须与前面的文本之间用 空格分隔。

    12. 粗斜体

    • 用3个星号*括起来即可,
    • 也可以用下划线_代替星号,前下划线必须与前面的文本之间用 空格 分隔。

    13. 行内代码文本

    斜引号(重音符) ` 括起来即可
    含有n个不连续的斜引号要用n+1对斜引号括起来:如为了显示```code```,代码应该有七个斜引号。

    14. 代码文本块

    在三个点后边加个‘r’,这段代码块将会高亮显示。
    注意不要用括号将r括起来,否则会被视为可执行的r代码。
    

    15-17. 下表、上标与同是上下标

    文本前后插入一对^,则该文本显示为下标。如x1显示为x1。

    x~1~^2^显示为x12

    18. 行内公式与公式块

    行内公式用一对美元符号$包围LaTeX公式

    公式块则用两个$$来包围

    LaTeX的具体公式另行查阅。

    20. 特殊字符与转义符

    转义符为反斜杠\,当符号具有特殊功能时,要想输出符号本身,在前面加转义符。

    单独的大括号可以正常输出,如{},或左括号{,右括号}。

    21. 链接

    对于文本就是网址的情况来说,无需特殊格式,输入该超链接的文本,系统会自动识别其为超链接。注意该文本应与周围文本用空格分隔。

    对文本不同于网址的情况来说,格式为显示文本

    22. 插入图片

    格式为 ![图片说明](C:/users/lenovo/图片路径),注意图片路径中为正斜杠而不是反斜杠,包含文件名本身。

    如果图片所在位置就在项目所在文件夹,在文件名前加点与斜杠,如[图片说明](./fig.png)显示为

    如果图片的代码与上下文之间不空行,图片显示的格式如同引用块,单独在下一行。图片后面的文字也会另起一行,但不显示图片说明。如果图片的代码与上下文之间都空行,则会显示图片说明。图片说明在图片下方左侧显示,灰色字体区别于正文的黑色。

    当路径中含中文时,在Rstudio浏览器中无法正常显示;当路径不含中文,文件名为中文时,无法在R脚本窗口显示。所以建议路径和文件名都用英文。

    如果想控制图片的显示尺寸,可以用下面的方式:
    ```{r echo=FALSE, fig.cap="插入本地图片", out.width = '30%'}
    knitr::include_graphics("./fig.png")
    ```

    在上面的方法中,将路径名改为网址,还可以插入来自网络的图片(以及本地或网络的gif动图),如

    ```{r echo=FALSE, fig.cap="来自网络的图片", out.width = '30%'}
    knitr::include_graphics("https://d33wubrfki0l68.cloudfront.net/aee91187a9c6811a802ddc524c3271302893a149/a7003/images/bandthree2.png")
    ```

    23.插入表格

    Right     Left     Center     Default
    -------     ------ ----------   -------
         12     12        12            12
        123     123       123          123
          1     1          1             1
          
    Table:  Demonstration of simple table syntax.
    
    #这样最右边一格之内会有两行。
    : Sample grid table.
    
    # 用冒号控制左右和居中
    
    +---------------+---------------+--------------------+
    | Fruit         | Price         | Advantages         |
    +===============+===============+====================+
    | Bananas       | $1.34         | - built-in wrapper |
    |               |               | - bright color     |
    +---------------+---------------+--------------------+
    | Oranges       | $2.10         | - cures scurvy     |
    |               |               | - tasty            |
    +---------------+---------------+--------------------+
    
    | Right | Left | Default | Center |
    |------:|:-----|---------|:------:|
    |   12  |  12  |    12   |    12  |
    |  123  |  123 |   123   |   123  |
    |    1  |    1 |     1   |     1  |
    
      : Demonstration of pipe table syntax.
    
    

    注意:

    • 表的代码结尾必须空行。
    • 表头上方可以有一行减号,也可以没有。
    • 如果每行内容都是单行,则表主体部分各行之间无需符号分隔,表头与主体之间用减号分隔。
    • 如果需要表内包含多行内容,则结尾必须添加虚线后再空行,虚线可以连续,也可以间断。表头上方必须有一行减号。处于表格不同行的内容,用空行分隔。处于表格同一行,但文本上不同行的内容,分行,但是不用空行分隔。
    • 表头可以省略,但是表头与表主体之间的分隔符不能省略。当表头省略时,结尾必须添加虚线后再空行,虚线可以连续,也可以间断。

    24、25. 引用块和对勾框

    在每一段文本(包括空行)前加入>与空格.

    可用LaTeX中的语法产生对勾框:\Box,对勾:\checkmark

    26-29 字体、字号、文字颜色、背景颜色

    用HTML语法实现字体、字号、颜色。

    <span style="font-family:字体;">······</span>
    如<span style="font-family:楷体;">楷体</span>显示为楷体 ,<span style="font-family:Times New Roman;">Times New Roman</span>显示为Times New Roman

    <span style="font-size:字号;">······</span>
    如<span style="font-size:25px;">字号25px</span>显示为字号25px

    <span style="color:颜色;">······</span>
    如<span style="color:red;">红色文字</span>显示为红色文字 ,<span style="color:#33C0FF;">文字色号#33C0FF</span>显示为文字色号#33C0FF

    如<span style="background-color:yellow;">背景为黄色</span>显示为背景为黄色 ,<span style="background-color:#33FF8B;">背景色号为#33FF8B</span>显示为背景色号为#33FF8B

    实测在html_document里用<font face="宋体" size=25px color="blue">······</font>照样可以实现。

    31. 对齐

    默认为左对齐。
    可用HTML语法实现其他对齐。

    居中
    <p style="text-align:center;">
    这是居中对齐的段落。
    </p>

    右对齐
    <p style="text-align:right;">
    这是右对齐的段落。
    </p>

    分散对其
    <p style="text-align:justify;">
    这是分散对齐的段落,文字不到一行。
    </p>

    32. 缩进

    <p style="text-indent:32px;">······</p>
    缩进两个汉字宽度的形式,可以设置为2em或32px

    <p style="text-indent:-5em;padding-left:5em;">
    悬挂缩进
    </p>
    超过一行的段落,第1行未进行缩进,接下来所有行都进行了缩进。缩进的宽度是可以调节的。以上代码是缩进5个汉字宽度的形式。

    <p style="padding-left:2em;">
    整体左缩进
    </p>
    所有行左侧都进行了缩进两个字符。

    <p style="padding-left:2em;padding-right:2em">
    整体左右均缩进
    </p>

    所有行左、右侧都进行了缩进两个字符

    33-34. 插入视频、音频

    scr就是source,插入本地音视频时需要写清格式,如果在同一文件夹下可以直接写文件名

    <video controls>
    <source src="video-example.mp4" type="video/mp4">
    </video>

    <span style="font-size:12px;"> 来自本地的视频。</span>

    <audio controls>
    <source src="audio-example.mp3" type="audio/mp3">
    </audio>

    35. 添加附件

    <a href="data.csv" download="data.csv">点击下载附件 data.csv</a>

    效果为点击文字即可下载附件

    5. 与代码的交互

    1. 行内代码

    2. 代码块
      作为一个块,R代码会被执行,结果会在下方的另一个块中显示出来,如果是数值或文本,前面会以两个井号开头。如果有警告或报错,也会显示出来。

    6. 代码块选项

    更多设置可见yihui xie,knitr
    或者我的另一篇R markdown笔记03-knitr01

    1-7

    代码 解释
    eval=F 代码块不执行但依旧会显示
    echo=F 代码不显示结果、报错等但是会执行
    result='hiden' 代码会执行但不会显示结果
    results='asis' 结果显示为原本的样子,段前没有#,没有灰色背景
    collapse = TRUE 代码与结果在一块,中间没有分割
    warning = FALSE 不显示警告
    error = FALSE 不显示报错
    message = FALSE 不显示通知信息
    include = FALSE[1] 仅执行代码,不显示代码,不显示结果,不显示警告、报错等等

    [1]: 等价于echo=FALSE, results = 'hide', warning = FALSE, message = FALSE

    8. 全局代码设置

    所有代码均执行相同的设置,则在第一个代码块中按照如下的方式设置。

    knitr::opts_chunk$set(fig.width = 8, collapse = TRUE)
    

    9. 图片格式设置

    参数 含义
    out.width/height 设置图片相对宽度/高度[1]
    fig.width=6 图片宽度为6英寸
    fig.height=6 图片高度为6英寸[2]
    fig.align="····" 设置图片对齐(’center’、’left’、’right’)
    fig.cap="····" 设置图标题。
    fig.show='hold' 多幅图并列显示

    [1]: 参数为百分数形成的字符串。
    [2]: 长宽的绝对值,单位为英寸。

    10. 表格格式设置

    1. 普通的data.frame可以用knitr::kable(align= , )函数展示。
    • align参数设置对齐,“l”为左对齐,“c”为居中,“r”为右对齐。也可以用长度等于列数的向量来设置每一列的对齐方式。
    • digits参数控制小数点位数,相当于给每一个数值传入round函数。- - caption给出表标题。下面为一个例子。

    knitr::kable(head(iris), align="c")

    iris数据集前6行
    1. 如果是tibble格式,在某些格式设置(如html_document中)下可直接输出。

    library(tidyverse)
    as_tibble(head(iris))

    7. 交互式图表

    改变每页显示的行数、按某一列进行排序、多页之间进行跳转、搜索表格中你想要的数据。

    library(DT)
    datatable(iris, options = list(pageLength = 5))

    得到的效果如下:


    it’s just a picture

    交互式图

    例一:

    library(dygraphs)
    dygraph(nhtemp, main = "New Haven Temperatures") %>%
    dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))

    得到效果如下:


    it's just a picture again

    例二:

    library(plotly)
    p <- ggplot(data = diamonds, aes(x = cut, fill = clarity)) +
    geom_bar(position = "dodge")
    ggplotly(p)

    得到效果如下:


    it’s a pic again

    例三:网络图

    library(visNetwork)
    nodes <- data.frame(id = 1:6, title = paste("node", 1:6),
    shape = c("dot", "square"),
    size = 10:15, color = c("blue", "red"))
    edges <- data.frame(from = 1:5, to = c(5, 4, 6, 3, 3))
    visNetwork(nodes, edges) %>%
    visOptions(highlightNearest = TRUE, nodesIdSelection = TRUE)

    得到效果如下


    效果无法上传到此,可自行在rstudio中尝试

    例五:3维挺newbeer的可以通过鼠标拖动并改变大小的图
    (例四为heatmap,忽略)

    library(threejs)
    z <- seq(-10, 10, 0.1)
    x <- cos(z)
    y <- sin(z)
    scatterplot3js(x, y, z, color=rainbow(length(z)))

    例六:可交互式地图

    可玩度比较高,搭配度分秒转化函数(jd()函数)可以根据已知经纬度进行定位,并在地图上呈现出来。

    library(leaflet)
    m <- leaflet() %>%
    addTiles() %>% # Add default OpenStreetMap map tiles
    addMarkers(lng=174.768, lat=-36.852, popup="The birthplace of R")
    m

    ###度角分转化为小数函数
    jd <- function(a,b,c){
      m <- a+b/60+c/3600
      return(m)
    }
    ### result
    > longitude<- jd(116,23,26.93)
    > latitude <- jd(39,54,56.92)
    > Imperial_Palace <- leaflet() %>%
    +   addTiles() %>%  # Add default OpenStreetMap map tiles
    +   addMarkers(lng= longitude, lat=latitude, popup="The gu palace")
    > Imperial_Palace
    

    效果:


    do u know this palace

    7. gif图呈现

    将一系列数据图转化为gif

    相关文章

      网友评论

        本文标题:R markdown笔记02-from bookdown.org

        本文链接:https://www.haomeiwen.com/subject/giictltx.html