zoukankan      html  css  js  c++  java
  • tidyverse学习与总结

    tidyverse学习与总结

    引言

    tidyverse 对于R语言的数据科学应用,其重要性不用多言。R语言程序包数量居多,但是这个tidyverse 套装中的程序包值得我去认真学习和总结,以期获得一个鸟瞰视野。

    首先,查看其包含的所有包,目前一共26个(截止2020-4-7):

    library(tidyverse)
    # List all packages in the tidyverse
    tidyverse_packages(include_self = TRUE)
    
    [1] "broom"       "cli"         "crayon"      "dplyr"       "dbplyr"      "forcats"    
     [7] "ggplot2"     "haven"       "hms"         "httr"        "jsonlite"    "lubridate"  
    [13] "magrittr"    "modelr"      "purrr"       "readr"       "readxl
    (>=" "reprex"     
    [19] "rlang"       "rstudioapi"  "rvest"       "stringr"     "tibble"      "tidyr"  
    
    [25] "xml2"        "tidyverse"  
    # 注意readxl 
    (>= 是显示问题,其实就是readxl package
    

    然后按照个人兴趣,逐个学习其中的每个包的主要函数与用法,与语法逻辑。

    对于对一个子package,我强烈推荐通过browseVignettes(package = "pkg_name") ,pkg_name是子package 的包名称,来进行鸟瞰式地学习和掌握该package。

    broom

    browseVignettes(package = "broom")

    Vignettes in package broom

    cli

    crayon

    dplyr

    browseVignettes(package = "dplyr")

    打开一个html页面,

    Vignettes in package dplyr

    看到包含5个vignette,每个都包含了html, source,和R code。这三个文件的逻辑是,source为R markdown的代码,html 是source rmarkdown文档导出的html文件,R code 就是只包含html 中的R代码部分(Just the code)。所以为了学习目的,应该看html,既有详细的介绍,又有代码示例。

    1. 首先学习,Introduction to dplyr的html。是dplyr 语法基础和函数基础的介绍,是必须掌握的内容。
    2. 再学习了,Two-table verbs。介绍了Mutating joins, Filtering joins, Set operations,是在dplyr中处理两个数据框之间根据观测值、根据变量名、将数据行视为一个集合的三种类似于merge用法的函数。
    3. 然后再学习Window functions。窗口函数就是聚合函数的变体,窗口函数产生和变量个数一样数目的结果,聚合函数如mean()将n个变量产生出一个结果。
    4. 再学习了Programming with dplyr 是一个dplyr函数中,引用的列名中包含变量时的处理方法。
    5. dplyr compatibility,主要是介绍不同的dplyr包版本之间的兼容性,目前一般的使用中一般用到的都是版本之间一直保持的经典函数用法,所以这个文档可以先不做学习。

    dbplyr

    forcats

    ggplot2

    haven

    hms

    httr

    jsonlite

    lubridate

    magrittr

    modelr

    browseVignettes(package = "modelr") 提示没有vignette。

    help("modelr")

    modelr: Modelling Functions that Work with the Pipe。modelr,帮助将建模过程无缝集成数据处理和可视化的管道中。

    学习资料modelr.tidyverse

    purrr

    其他语言的函数式编程

    browseVignettes(package = "purrr")

    Vignettes in package purrr

    • Functional programming in other languages - HTML source

    本package的html内容介绍比较简略,如下:

    purrr从许多相关的工具中获得灵感:

    • List operations defined in the Haskell prelude
    • Scala’s list methods.
    • Functional programming libraries for javascript: underscore.js, lodash and lazy.js.
    • rlist, another R package to support working with lists. Similar goals but somewhat different philosophy.

    然而,purrr的目标并不是试图在R中模拟一种更纯粹的函数式编程语言;我们不想在R中实现Haskell的第二级R版本。我们的目标是给你类似于FP语言的表达能力,同时允许你写代码看起来和工作起来都像R:

    • 我们使用管道 %>%, 来编写可以从左向右读取的代码,而不是使用 point free(默示)样式。.
    • 我们用来传递额外的参数。
    • 匿名函数在R中是冗长的,因此我们提供了两个简便方法。对于一元函数,~ .x + 1 is equivalent to function(.x) .x + 1。对于函数链,. %>% f() %>% g() is equivalent to function(.) . %>% f() %>% g() (此快捷方式由magrittr提供)。
    • R是弱类型的,所以我们需要' map '变量来描述输出类型(如 map_int(), map_dbl(), 等),因为我们不知道' .f 的返回类型。
    • R函数支持name arguments,而不是为一些细微的变化提供不同的函数。' detect() '和' detectLast() ')我们使用一个命名参数' .right '。类型稳定的函数很容易推理,因此附加的参数永远不会改变输出的类型。R has named arguments, so instead of providing different functions for minor variations (e.g. detect() and detectLast()) we use a named argument, .right. Type-stable functions are easy to reason about so additional arguments will never change the type of the output.

    readr

    Vignettes in package readr

    readxl

    reprex

    rlang

    rstudioapi

    rvest

    stringr

    browseVignettes(package = "stringr")

    Vignettes in package stringr

    首先,学习Introduction to stringr

    在 stringr主要有四个家族的函数:

    1. 字符操作函数
    2. 空格操作工具
    3. 区域敏感操作,其操作因区域而异。
    4. 模式匹配功能。它们识别模式描述的四个引擎。最常见的是正则表达式,但还有其他三种工具。

    tibble

    tidyr

    xml2

  • 相关阅读:
    Vue单页面应用
    MVVM模式理解
    Ajax原生四大步骤
    Vue 全家桶介绍
    原生js的dom操作
    vs2015+opencv3.3.1+ maxflow-v3.01 c++实现Yuri Boykov 的Interactive Graph Cuts
    c++迭代递归实现汉诺塔(5种迭代方法满足你)
    opencv3.3.1+vs2015+c++实现直接在图像上画掩码,保存掩码图片
    声明函数指针、回调函数、函数对象------c++程序设计基础、编程抽象与算法策略
    C++/C语言的标准库函数与运算符的区别new/delete malloc/free
  • 原文地址:https://www.cnblogs.com/songbiao/p/12652143.html
Copyright © 2011-2022 走看看