3.1.R Basics

How to make professional and beautiful plots

Tips:

Do things with multiple ways

Efficient Writing: Bash > R > Perl/Python > Excel > C,C++

1) Install and Use R

1a) Install R

See the official site of R: https://www.r-project.org/ (Docker中已经安装好,docker images的下载链接如附表所示)

Here is an example of installation in Linux:

  • For CentOS

    yum -y install epel-release
    yum -y install R
  • For Ubuntu

    apt -y install r-base

1b) Install RStudio

If you like a nice interface to use R instead of Linux command line, you can try RStudio: https://www.rstudio.com/

We have some instruction of Rstudio in Appendix. Plot with R

1c) Use R

  • how to enter?

    • On Mac or Linux, you can open a Terminal and type

      R
    • On Windows or Mac, you can find a program with this logo:

  • How to quit?

    q()

  • How to get help?

    For example, we use use ?t.test to we get help for t.test() function

2) Basic Data Types

2a) basic type

> x = 10.5 # assign a decimal value
> x # print the value of x
[1] 10.5
> class(x) # print the class name of x
[1] "numeric"
> y = as.integer(3)
> y # print the value of y
[1] 3
> class(y) # print the class name of y
[1] "integer"
> z = 1 + 2i # create a complex number
> z # print the value of z
[1] 1+2i
> class(z) # print the class name of z
[1] "complex"
> x = 1; y = 2 # sample values
> z = x > y # is x larger than y?
> z # print the logical value
[1] FALSE
> class(z) # print the class name of z
[1] "logical"
> x = as.character(10.5)
> x # print the character string
[1] "10.5"
> class(x) # print the class name of x
[1] "character"

2b) vector

> c(2, 3, 5)
[1] 2 3 5
> n = c(2, 3, 5)
> s = c("aa", "bb", "cc", "dd", "ee")
> c(n, s)
[1] "2" "3" "5" "aa" "bb" "cc" "dd" "ee"
> s = c("aa", "bb", "cc", "dd", "ee")
> s[3]
[1] "cc"

2c) matrix

> B = matrix(
+ c(2, 4, 3, 1, 5, 7),
+ nrow=3,
+ ncol=2)
> B # B has 3 rows and 2 columns
[,1] [,2]
[1,] 2 1
[2,] 4 5
[3,] 3 7

2d) list

> n = c(2, 3, 5)
> s = c("aa", "bb", "cc", "dd", "ee")
> b = c(TRUE, FALSE, TRUE, FALSE, FALSE)
> x = list(n, s, b, 3) # x contains copies of n, s, b
> x
[[1]]
[1] 2 3 5
[[2]]
[1] "aa" "bb" "cc" "dd" "ee"
[[3]]
[1] TRUE FALSE TRUE FALSE FALSE
[[4]]
[1] 3

2e) data frame

> n = c(2, 3, 5)
> s = c("aa", "bb", "cc")
> b = c(TRUE, FALSE, TRUE)
> df = data.frame(n, s, b) # df is a data frame
> df
n s b
1 2 aa TRUE
2 3 bb FALSE
3 5 cc TRUE

3) Examples

3a) A simple example of t test

  • start R and type:

x=c(5.6,7.9,8.9,19.5,20.5,39.5)
y=c(6.5,8.3,9.1,17.9,29.4,22.8)
write.table(x, file = "foo1")
write.table(y, file = "foo2")
a<-read.table("foo1") # read the file
b<-read.table("foo2") # read the file
t.test(a,b,alternative=c("less"))
t.test(a[[1]],b[[1]],altrenative=c("less"),paired=TRUE) # paired t test
  • You can also write these into a file, script.R, then run

    R CMD BATCH script.R

3b) More R Examples

4) 视频教程

5) More Readings and Practices

5a) Basic

5b) Advanced

6) Homework

用R语言实现以下的任务描述,作业提交一个word文档,包含R代码和每一步输出结果的截图。

  • 打开帮助文档首页,并查阅其中的“Introduction to R”。

  • 安装vcd包(一个用于可视化类别数据的包)

  • 列出此包中可用的函数和数据集。

  • 载入这个包并阅读数据集Arthritis的描述。

  • 显示数据集Arthritis的内容(直接输入一个对象的名称将列出它的内容)。

  • 运行数据集Arthritis自带的示例。

  • 退出。

References

休息一会

R,Robert, 23andMe

R语言是从S统计绘图语言演变而来。S语言上世纪70年代诞生于AT&T贝尔实验室,基于S语言开发的商业软件S-Plus,可以方便的编写函数、建立模型,具有良好的扩展性,在国外学术界应用很广。但是由于商业性特征,其软件价格昂贵。

1995年由新西兰Auckland大学统计系教授Robert Gentleman和他的同事Ross Ihaka,基于S语言的源代码,编写了一能执行S语言的软件,并将该软件的源代码全部公开,这就是R软件,因为主要编写的两位科学家名字首字母都是R,因此其命令统称为R语言。他们就是“R语言之父”。

有趣的是,两位“R语言之父”此后发展轨迹并不相似。 Ross于2017 年退休,此前一直担任新西兰Auckland大学统计学副教授。 Robert则从Auckland统计学教授慢慢变成了生物信息学家。2001年,Robert开始研究Bioconductor项目,以促进生物信息学和计算生物学开源工具的开发。2009年,Robert加入Genentech生物技术公司,担任生物信息学和计算生物学高级主管,同年他编写了一本书《R programming for bioinformatics》。2015年,Robert 加入23andMe,担任计算生物学副总裁,如今他专注于探索23andMe数据库中的人类遗传和性状数据如何用于鉴定新的疾病治疗方法。

23andMe公司由Linda Avey,Paul Cusenza和Anne Wojcicki于2006 年创立,旨在为个人消费者提供基因测试及相应服务,以正常人类细胞中的23对染色体命名,23andMe是第一家为提供祖源分析的常染色体DNA检测的公司。

23andMe基于唾液的直接面向消费者(DTC)的基因检测业务在2008 年被时代杂志评为“年度发明” 。2013年11月,因为基因检测报告中遗传疾病预测未得到充分临床经验验证等争议问题,FDA命令23andMe停止在美国销售其唾液收集试剂盒和个人基因组服务(PGS)。此后,23andMe开始扩宽海外市场,并停止提供健康相关的基因报告。经过几年的市场调研,23andMe验证了部分健康相关基因检测的准确性。2017年4月,FDA批准了其公司包括迟发性阿尔茨海默病,帕金森病等在内的10项基因检测申请。2018年3月,FDA批准了与乳腺癌相关的基因突变检测申请。

目前,国内主流的基因检测产品Wegen和23魔方都学习了23andMe的经验,甚至说模仿了23andMe的产品。