SCI医学科研助手
生信分析-Meta分析-基础实验

R数据科学–第十五章 向量(下)

今天是生信星球陪你的第183天


   你想找辆共享单车,发现满街都是别家车,没有一辆你能骑。

   你想学点生信,搜了“初学者教程”,满眼尽是高大上,没有一句能看懂。

   终于你跨越茫茫宇宙,来到生信星球,发现了初学者的新大陆!

如果你对R语言一无所知,建议先学习《零基础系列》

本系列的参考资料是:学R必备的神书《R数据科学》,如果你还不了解这本书,?点这里。

强行解锁R语言入门新姿势

系列连载:

R数据科学–初见

R数据科学–详解ggplot2

R数据科学–插播dplyr习题

R数据科学–第三章dplyr

R数据科学–第五章 EDA

R数据科学–第七章 tibble

R数据科学–第八章 readr

R数据科学–第九章 dplyr处理关系数据

R数据科学–第十章 使用stringr处理字符串(上)

R数据科学–第十章 使用stringr处理字符串(下)

R数据科学–第十一章 forcats处理因子

R数据科学–第十三章 管道操作

R数据科学–第十四章 函数

R数据科学–第十五章 向量(上)

目录那么长,而我还在执着地继续加长,愿将来会感谢现在努力的自己。

英文版书籍地址:http://r4ds.had.co.nz/


还是先

library(tidyverse)
#> ── Attaching packages ────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
#> ✔ ggplot2 3.0.0     ✔ purrr   0.2.5
#> ✔ tibble  1.4.2     ✔ dplyr   0.7.6
#> ✔ tidyr   0.8.1     ✔ stringr 1.3.1
#> ✔ readr   1.1.1     ✔ forcats 0.3.0
#> ── Conflicts ───────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
#> ✖ dplyr::filter() masks stats::filter()
#> ✖ dplyr::lag()    masks stats::lag()

5.递归向量

  • 创建

#创建原子向量-c()
x <- c(123)
#创建列表 list()
x <- list(123)
#查看列表结构
str(x)
#> List of 3
#>  $ : num 1
#>  $ : num 2
#>  $ : num 3
  • 可以包含不同类型的对象

y <- list("a"1L1.5TRUE)
str(y)
#> List of 4
#>  $ : chr "a"
#>  $ : int 1
#>  $ : num 1.5
#>  $ : logi TRUE
  • 列表甚至可以包含其他列表

z <- list(list(12), list(34))
str(z)
#> List of 2
#>  $ :List of 2
#>   ..$ : num 1
#>   ..$ : num 2
#>  $ :List of 2
#>   ..$ : num 3
#>   ..$ : num 4

5.1列表取子集

a <- list(a = 1:3, b = "a string", c = pi, d = list(-1, -5))
  • [] 提取子列表

str(a[1:2])
#> List of 2
#>  $ a: int [1:3] 1 2 3
#>  $ b: chr "a string"
str(a[4])
#> List of 1
#>  $ d:List of 2
#>   ..$ : num -1
#>   ..$ : num -5

-[[]]或$提取元素 降低一个层级

str(a[[1]])
#>  int [1:3] 1 2 3
str(a[[4]]) #和str(a[4])对比一下
#> List of 2
#>  $ : num -1
#>  $ : num -5
a$a
#> [1] 1 2 3

第六节应该是个超纲题!

6.特性

x <- 1:10
attr(x, "greeting") <- "Hi!"
attr(x, "farewell") <- "Bye!"
attributes(x)
#> $greeting
#> [1] "Hi!"
#> 
#> $farewell
#> [1] "Bye!"

好像很抽象,结合?attr给出的例子和下面的重点。进行了一些摸索

#维度
attr(x,"dim") <- c(25)
x
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,]    1    3    5    7    9
#> [2,]    2    4    6    8   10
#> attr(,"greeting")
#> [1] "Hi!"
#> attr(,"farewell")
#> [1] "Bye!"
#名称
y <- c(1,3,5)
attr(y,"names") <- c("a","b","c")
y
#> a b c 
#> 1 3 5
#我成功的发现这就是命名操作,和之前讲的效果一样
set_names(c(1,3,5),c("a","b","c"))
#> a b c 
#> 1 3 5

(难度好像真的超标,硬着头皮继续)

捋一下:

class控制泛型函数的运行方式

泛型函数允许根据不同类型的输入而进行不同的操作

那么字面翻译,泛型指的是多种输入类型。

7.扩展向量

(1)因子

x <- factor(c("ab""cd""ab"), levels = c("ab""cd""ef"))
typeof(x)
#> [1] "integer"
class(x) #曾以为class和typeof一样,看来是错了。
#> [1] "factor"
attributes(x)#不仅能展示levels还能展示class
#> $levels
#> [1] "ab" "cd" "ef"
#> 
#> $class
#> [1] "factor"

看到时间就跳过,暗爽。

(3)tibble

tibble 是扩展的列表,有 3 个class: tbl_df、 tbl 和 data.frame。它的特性有 2 个:(列)
names 和 row.names。

tb <- tibble::tibble(x = 1:5, y = 5:1)
typeof(tb)
#> [1] "list"

关于tibble和data.frame

tb <- tibble::tibble(x = 1:5, y = 5:1)
typeof(tb)
#> [1] "list"
attributes(tb)
#> $names
#> [1] "x" "y"
#> 
#> $row.names
#> [1] 1 2 3 4 5
#> 
#> $class
#> [1] "tbl_df"     "tbl"        "data.frame"

df <- data.frame(x = 1:5, y = 5:1)
typeof(df)
#> [1] "list"
attributes(df)
#> $names
#> [1] "x" "y"
#> 
#> $class
#> [1] "data.frame"
#> 
#> $row.names
#> [1] 1 2 3 4 5

主要区别就是class!tibble里包含了data.frame。

隔壁生信技能树公益视频合辑(学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!)

国内看B站,教学视频链接:https://m.bilibili.com/space/338686099 
国外看YouTube,教学视频链接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists 

友情链接:

生信工程师入门最佳指南
学徒培养

资料大全


点击底部的“阅读原文”,获得更好的阅读体验哦?

初学生信,很荣幸带你迈出第一步。

我们是生信星球,一个不拽术语、通俗易懂的生信知识平台。由于是2018年新号,竟然没有留言功能。需要帮助或提出意见请后台留言、联系微信或发送邮件到Bioplanet520@outlook.com,每一条都会看到的哦~

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:医学SCI科研之家 » R数据科学–第十五章 向量(下)

评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

学习、交流、分享

生信分析交流群综合科研交流群

登录

忘记密码 ?

切换登录

注册