2021-03-04生信技能树-生信入门D3

生信技能树2021生信入门线上课笔记,需要结合课程讲解服用

数据结构

1)向量-一个维度

> x=sample(1:100,28)
> x
 [1] 46 59 43 10 18 61 95 72 92 32 52  5 49  9 12 20
[17]  7 54 34 23 80 58 66 67 88 26 76 44

2)矩阵-两个维度,里面的向量要长度相同,数据类型相同

> matrix(x,nrow=7)#byrow按行排
     [,1] [,2] [,3] [,4]
[1,]   46   72   12   58
[2,]   59   92   20   66
[3,]   43   32    7   67
[4,]   10   52   54   88
[5,]   18    5   34   26
[6,]   61   49   23   76
[7,]   95    9   80   44

3)数据框-二维,长度相同、数据类型可以不同的向量按列组合(作图时常用的数据类型)

> y1=letters[1:7]
> y2=sample(1:100,7)
> y3=sample(1:10,7)
> data.frame(y1,y2,y3)
  y1 y2 y3
1  a 32  2
2  b 13  5
3  c  8  9
4  d 46  1
5  e  1  4
6  f 95  8
7  g 76  3

> a = 1:30
> a
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16
[17] 17 18 19 20 21 22 23 24 25 26 27 28 29 30
> dim(a) = c(5,6)#将向量转化为数据框,添加维度
> a
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    6   11   16   21   26
[2,]    2    7   12   17   22   27
[3,]    3    8   13   18   23   28
[4,]    4    9   14   19   24   29
[5,]    5   10   15   20   25   30

4)列表-长度可以不同,数据类型可以不同,没有行列的概念,可以有多级元素,列表可以无限嵌套

1.随机抽样

sample(1:100,7) #从1到100中随机抽取7个,无放回
[1] 51 53 57 21 60 84 41

> sample(1:60,61,replace = T)#放回
 [1] 22  2 38 34 29 57 44  5 37 51 23 26  7 32 58 21
[17] 55 30 38 28  6 28 38 22 44 41 25  9 35 34  7 24
[33] 29 19 17 56 11 39 10 44 22 23 52 46 36 20 21 19
[49] 36 40 24 29 44 12 59 43 29 32 56 41 57

> set.seed(100)#让模拟结果能够可重复出现
> sample(1:60,6,replace = T)
[1] 10 55 38 48 51 25
rm(list = ls())#清空环境
options(stringsAsFactors = F)#避免把数据框里的数据类型转化为因子

3.数据框来源
(1)在R中新建(本质是向量按列组合)
(2)由已有数据转换或处理得到
(3)从文件中读取

df2 <- read.csv("gene.csv")
df2

(4)内置数据集(不需要赋值也可以使用的变量)

4.数据框属性描述

dim(df)#几行几列
nrow(df)#行数
ncol(df)#列数

rownames(df)
colnames(df)

head(df)#默认取6行
head(df,3)#看前3行

df[1:3,1:3]#看前3行前3列;不经过赋值,就只是输出看看

> class(iris[1])#取第一列,仍为数据框
[1] "data.frame"

str(df)#查看每一列的数据类型和具体内容

na.omit(df)#删除含有缺失值的行

5.数据框取子集(左边是行,右边是列,哪边空着就哪边全选;中括号里的逗号表示维度的分割)

df[2,2]
df[2,]
df[,2]
df[c(1,3),1:2]

#根据‘名字’提取自己
df[,"gene"]
df[,c('gene','exp')]

df[,-ncol(df)]#选取除了最后一列的其他列

df$exp  #取列,按tab键补齐;$后是不存在的列名,就是新增加一列
mean(df$exp)
  1. 数据框修改:取子集$或[ ],再重新赋值向量
    运行错了的代码不可以撤销,但可以覆盖
7.练习题

提取test(数据框)中,最后一列值为versicolor或setosa的行,组成一个新的数据框,赋值给test2。

test2 = test[test$Species %in% c("versicolor","setosa"),]
#用$取最后一列species,用%in%判断最后一列中是否包含versicolor或setosa,范围值为T或者F,【】取范围值为T的行

test2 = test[test$Species!="virginica",]
#!为非,否定;反向取

Tips

%in%返回的是T或者F,长度与前面的向量相等
match返回的是后面向量的下标,如果没有出现,就返回NA

> a=sample(1:100,7);a
[1] 58  1 90 84 39 70 16
> b=letters[1:3];b
[1] "a" "b" "c"
> c=c(58,86,84,16);c
[1] 58 86 84 16
> a%in%c
[1]  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE
> match(a,b)
[1] NA NA NA NA NA NA NA
> match(a,c)
[1]  1 NA NA  3 NA NA  4

数据框列的顺序错乱,如何重排?https://mp.weixin.qq.com/s/rA92iZS8HUiuwlyrPirHdA

提升参考:R语言中的排序,集合运算,reshape,以及merge总结 http://www.bio-info-trainee.com/1071.html

9.数据框连接

cbind#按列连接,行数相同
rbind#按行连接,列数相同
merge(test1,test2,by='name')#根据列名,相同内容合并
merge(x=test1,y=test3,by.x='name',by.y='NAME')#R语言中严格区分大小写

10.矩阵的转置和转换

> m <- matrix(1:9, nrow = 3)#生成矩阵
> colnames(m) <- c("a","b","c") #改列名
> m
     a b c
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> t(m)#转置
  [,1] [,2] [,3]
a    1    2    3
b    4    5    6
c    7    8    9
> as.data.frame(m)#转换
  a b c
1 1 4 7
2 2 5 8
3 3 6 9

11.元素命名names( )
可以根据名字取子集
向量、数据框、列表通用
用简单的函数包含两种信息

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容