R小推车Bioconductor学习生物信息编程

欧剑虹老师BOOK学习记录:第一章 R/Bioconductor

2019-05-03  本文已影响68人  热衷组培的二货潜

首先最重要的参考链接:

第一章 R/Bioconductor入门

image.png

啊啊啊,如有侵犯版权, 麻烦请私信我,看到立马删除!

主要用来记录自己可能要用的一些知识点。(基本复制粘贴,建议直达链接)

4 - .7 + .3为什么会不等于零呢?

在R中,逻辑运算符(logical operator)有!, &, &&, |, ||, or, is TRUE等等。&与&&, |与||有什么区别呢?

a<-c(TRUE, FALSE, TRUE, FALSE)
b<-c(FALSE, FALSE, TRUE, TRUE)
c<-c(TRUE, FALSE, FALSE, FALSE)

> a & b
## [1] FALSE FALSE  TRUE FALSE

> a && b
## [1] FALSE

待我长发及腰,少年娶我可好? ——语出: 何晓道 《十里红妆女儿梦》

hairLength <- 25
waisHeight <- 110
height <- 168
marryMe <- FALSE
if(hairLength >= height - waisHeight){marryMe <- TRUE}
ifelse{marryMe, "YES", "NO"}

合理使用空格

软件安装

source("http://www.bioconductor.org/biocLite.R")
library(BiocInstaller)
biocLite() ##安装Bioconductor
biocLite("trackViewer") ##安装trackViewer软件包
library(trackViewer) ##加载trackViewer软件包

## 查看当前的安装源
biocinstallRepos()

## 使用chooseBioCmirror函数选择合适的镜像
chooseBioCmirror()

install.packages("BiocManager", repos="https://cloud.r-project.org")
library(BiocManager)
install("trackViewer")

# 选择镜像安装
repositories()
chooseBioCmirror()
chooseCRANmirror()

使用I()

data.frame(A=1:3, B=I(list(1, 1:2, letters[1:3])))
##   A       B
## 1 1       1
## 2 2    1, 2
## 3 3 a, b, c

保存当前对话中所有的数据

save(list=ls(all=TRUE), file="all.RData") ##有一个快捷函数为save.image()
rm(list=ls()) ##删除对话中所有的对象
ls()

unlink("all.RData") ## 删除刚写入的文件

假设我只想保存当前对话中的指定的对象,并且希望使用最大的压缩比,应该怎么办呢?

## 保存当前对话中的mat1,使用最大的压缩比
save("mat1", file="mat1.rda", compress="bzip2", compression_level=9)
file.info("mat1.rda")$size ##文件的大小

字符串处理

#赋值
mychar <- c("ACTACCACTAACCACT","TCATCCATTCGTGGG","GTTGTTCCATAG")

# 获取字符串长度

nchar(mychar)
## [1] 16 15 12
length(mychar)
## [1] 3

# 截取第2个到第四个字符
substr(mychar, 2, 4)
## [1] "CTA" "CAT" "TTG"

# 将每一个序列中的第二个和第四个字符替换为`TTT`
substr(mychar, 2, 4)<-"TTT"
mychar
## [1] "ATTTCCACTAACCACT" "TTTTCCATTCGTGGG"  "GTTTTTCCATAG"

# 替换,定义一个函数`dna2rna` 将`T`替换成`U`, 其实主要利用的是函数`chartr`.
dna2rna<-function(inputStr){
   if(!is.character(inputStr))
         stop("need character input")
     is = toupper(inputStr)
     chartr("T", "U", is)
}
dna2rna(mychar)
## [1] "AUUUCCACUAACCACU" "UUUUCCAUUCGUGGG"  "GUUUUUCCAUAG"

# https://www.rdocumentation.org/packages/base/versions/3.5.3/topics/chartr
# chartr(old, new, x)
# tolower(x)
# toupper(x)
# casefold(x, upper = FALSE)

# 连接
paste("prefix",mychar,"postfix",sep="-")
## [1] "prefix-ATTTCCACTAACCACT-postfix" "prefix-TTTTCCATTCGTGGG-postfix" 
## [3] "prefix-GTTTTTCCATAG-postfix"
paste(mychar,collapse="--")
## [1] "ATTTCCACTAACCACT--TTTTCCATTCGTGGG--GTTTTTCCATAG"

# 分割, 按照字符`C`对数据进行分割
strsplit(mychar,"C")
## [[1]]
## [1] "ATTT" ""     "A"    "TAA"  ""     "A"    "T"   
## 
## [[2]]
## [1] "TTTT"  ""      "ATT"   "GTGGG"
## 
## [[3]]
## [1] "GTTTTT" ""       "ATAG"

# 按照字符`C`或者`G`对数据进行分割
strsplit(mychar,"[CG]")
## [[1]]
## [1] "ATTT" ""     "A"    "TAA"  ""     "A"    "T"   
## 
## [[2]]
## [1] "TTTT" ""     "ATT"  ""     "T"    ""     ""    
## 
## [[3]]
## [1] ""      "TTTTT" ""      "ATA"

# 分割成单个字符
strsplit(mychar, "")
## [[1]]
##  [1] "A" "T" "T" "T" "C" "C" "A" "C" "T" "A" "A" "C" "C" "A" "C" "T"
## 
## [[2]]
##  [1] "T" "T" "T" "T" "C" "C" "A" "T" "T" "C" "G" "T" "G" "G" "G"
## 
## [[3]]
##  [1] "G" "T" "T" "T" "T" "T" "C" "C" "A" "T" "A" "G"

# 排序
sort(mychar)
## [1] "ATTTCCACTAACCACT" "GTTTTTCCATAG"     "TTTTCCATTCGTGGG"

# 匹配:`match`、`%in%`、`pmatch`、`charmatch`
exT<-c("Intron", "Exon", "promoter","enhancer")
match("Exon", exT)
## [1] 2

"promoter" %in% exT
[1] TRUE

pmatch("x", exT)
## [1] NA

charmatch("E", exT)
## [1] 2

charmatch("x", exT)
## [1] NA

pmatch(c("Exo","enh"), exT)
## [1] 2 4

# 格式化
format(1:10)
##  [1] " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" " 9" "10"

format(1:10, trim = TRUE)
##  [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"

zz <- data.frame("(row names)"= c("aaaaa", "b"), check.names=FALSE)
format(zz)
##   (row names)
## 1       aaaaa
## 2           b

format(zz, justify = "left")
##   (row names)
## 1       aaaaa
## 2       b

正则匹配

.  # 除了换行以外的任意字符
^    # 一行字符串的起始,它并不代表第一个字符,只代表这里开始新的一行字符串。
$    # 一行字符串的结束,它并不代表最后一个字符(因为换行符并不会被包含进匹配当中),只代表一行字符串到这里结束。
*    # 零个或者多个之前的字符
+    # 一个或者多个之前的字符
?    # 零个或者一个之前的字符
# 示例部分
t.e    # t后面跟任意一个非换行字符然后跟字符e
    # 它可以匹配        the
    #                 tre
    #                 tle
    # 但是不匹配 te
    #           tale
^f    # 一行字符以f起始
^ftp    # 一行字符以ftp起始
e$    # 一行字符以e结尾
tle$    # 一行字符以tle结尾
und*    # un跟着零个或者多个d字符
    # 它会匹配 un
    #         und
    #         undd
    #         unddd (etc)
.*    # 任意一个无换行的字符串,
    #  . 匹配任何一个非换行字符
    #  * 将匹配一个或者多个之前的字符.
^$    # 一个空行.

 # 在正则中有方括号[],代表可以匹配其中任何一个字符。而^在[]中就有了新的意义,代表“非”, -代表了“之间”
[qjk]        # q,j,k中任意一个字符
[^qjk]        # 非q,j,k的任意其它字符
[a-z]        # a至z中任意一个小写字符
[^a-z]        # 非任意一个a至z小写字符的其它字符(可以是大写字符)
[a-zA-Z]    # 任意一个英文字母
[a-z]+        # 一个或者多个小写英文字母

 # |代表或者 小括号(...)可以把或者的部分括起来。注意小括号可能还有别的用途,但是在R当中先不使用。

jelly|cream    # jelly或者cream
(eg|le)gs    # eggs或者legs
(da)+        # da或者dada或者dadada 或者更多个da的重复

 # 大括号括住1至2个数字,代表重复次数。
*    # 零个或者多个之前的字符
+    # 一个或者多个之前的字符
?    # 零个或者一个之前的字符
{n}    # n个之前的字符
{n,}    # 大于等于n个之前的字符
{n,m}    # n至m个之前的字符

 # 下面的是一些字符被转义符\转义会赋以了一些新的(有可能是约定俗成的)意义
\n        # 换行符
\t        # tab
\w        # 任意字母(包括下划线)或者数字
        # 等同于[a-zA-Z0-9_]
\W        # \w的反义.
        # 等同于[^a-zA-Z0-9_]
\d        # 任意一个数字,等同于[0-9]
\D        # \d的反义,等同于[^0-9]
\s        # 任意一个空格,比如,
        # space, tab, newline, 等
\S        # \s的反义,任意一个非空格
\b        # 单词的边界, 不能使用在[]内
\B        # \b的反义

 # 很明显,对于保留字符$, |, [, ), \, / 等等都需要转义字符\来转义表示:

\|        # 竖线
\[        # \[左方括号 \]右方括号
\)        # \(左小括号 \)右小括号
\*        # 星号
\^        # 开号
\/        # 反斜杠
\\        # 斜杠
上一篇 下一篇

猜你喜欢

热点阅读