如何学习R语言
2020-03-24 本文已影响0人
茶思饭
-
1. 入门了解
-
R 能干啥?为啥要学R?
- 强大的数据分析工具及各种扩展包
- 高通量的数据处理能力
-
Rstudio(强大的R 编辑器,极大降低了R语言学习难度)
-
安装R & Rstudio
- R 镜像:https://mirrors.tuna.tsinghua.edu.cn/CRAN/
- Rstudio
-
安装R包
- install.package() #
- BiocManager::install() #
- devtool() #
-
R包的使用
- >library(“pheatmap”) ##调用程序包,程序包必须被调用才能使用
- >require(“pheatmap”) ##调用程序包,程序包必须被调用才能使用
- >update.packages("pheatmap")## 升级程序包
- >detach("pheatmap")
-
R的各种打开方式 #[https://mp.weixin.qq.com/s?__biz=MzI5NjUyNzkxMg==&mid=2247484507&idx=1&sn=295454a59613bfd977f407958bec787e&scene=21]
- Revolution R Enterprise (windows)
- tinn-R (windows)
- rattle (linux)
- RKWard( 基于QT)
- JGR(基于JAVA)
- Eclipse
- Red-R(专门用于编辑R分析流程)
- AirXCell(基于Web界面)
- Emacs
- Vim
- textMate
- sublime
- radian(21世纪的R终端,基于Python)
- VSCode(非常现代化,有很好的扩展生态)
- Rstudio-server(在浏览器打开服务器上的R,界面与Rstudio一样)
- Rcode
-
-
2. 如何学习R
-
公众号/简书 /博客
- github 软件开发者的聚集地# https://github.com/
- Y叔 biobabble公众号(R语言大神,写过多个R包,让我仰视的存在)
- 生信技能树公众号(创始人jimmy是生信技能树论坛的创始人,励志让10万人学会生信,内容也是干货满满)
- 果子学生信公众号/简书(生信技能树成员)
- 徐洲更hoptop -简书(生信技能树成员)
- 生信媛公众号
- 生信菜鸟团博客 # http://www.bio-info-trainee.com/
- 简书——简书上也有许多其他学友写的一些很好的文章,需要知道什么内容也可以在上面搜索。
-
使用swirl包学习
-
查看帮助文档
- Tab键补全:及查看函数的简要说明,当不记得完整函数名或者参数时,使用Tab键能解决你的问题。
- ?+函数名:查看函数的说明文档,了解函数的功能及参数。
- ??pheatmap 在线看帮助文档
- CRAN https://cran.r-project.org/other-docs.html
-
论坛
- 生信技能树 # http://www.biotrainee.com:8080/forum.php
- Omicshare # https://www.omicshare.com/forum/
- github # 面向开源及私有软件项目的托管平台,在上面有海量的开源代码,也可以提问与软件开发者互动
- stackoverflow 大名鼎鼎,http://stackoverflow.com/
-
视频、播客
- 生信技能树-jimmy # https://space.bilibili.com/338686099/
- 腾讯课堂 #https://ke.qq.com
- Omicshare class # https://www.omicshare.com/class/home/index/index
- 其他方式:百度or谷歌or必应or......
-
-
3. R基础语法
-
R中的基本概念:
- Experession # 表达式;
- Object # 对象;
- Function # 函数;
- operator # 符号;
- Attributes# 属性 ,对象的特征
-
R语言的符号
- 注释符:# “#”所有右边的内容为说明,或者注释(包括#)
- 赋值符:<- 或者= 表示 变量赋值 ,assignment operator
- 连续符: # 用于创制整数型序列 eg. 1:3 表示1,2,3数学运算 运算后给出数值结果
- 运算符:+,加; -,减; ,乘; /,除; ^ ,幂;%% 取模(整除…余数) ;%/% 整除;%%,矩阵乘积
- 比较运算: 运算后给出判别结果 (TRUE FALSE):> #大于, < #小于, <= #小于等于, >= #大于等于 , == #等于, != 不等于
- 逻辑运算 与、或、非:! # NOT, & , && # AND, |, || # OR
- 对象# Object 的类型:
- 数值型 Numeric 如 100, 0, -4.335 Inf#无穷大 NaN# Not a Number
- 字符型 Character 如“ China”
- 逻辑型 Logical 如 TRUE, FALSE
- 整数型 Integer 1
- 因子型 Factor 表示不同类别
- 复数型 Complex 如: 2 + 3i
- NA # 表示缺省
- 数据类型相关函数:
- >class(x) ##返回变量x的数据类型
- >as.numeric(X) ## 将x的数据类型改为数值型
- >as.logical(X)## 将x的数据类型改为逻辑型
- >as.character(x)## 将x的数据类型改为字符型
- >factor() ##用来创建因子
- >unclass() ## 去除对象的类型
- >is.na() ##检测是否有缺省NA ###NA values have a class also, so there are integer NA , character NA, etc.
- >is.nan() ## 检测是否有NaN ###A NaN value is also NA but the converse is not true
- >complete.cases() # 判断多个向量的缺失值的位置取并集
-
对象的数据结构
- 向量 (vector)一系列元素的组合。
- 因子 (factor)因子是一个分类变量,如 “a”,”a”,” a”,”a”,”b”,” b”,”b”,”c”,” c”
- 数组 (array)数组是k维的数据表。
- 矩阵 (matrix)矩阵是数组的一个特例,维数k = 2。
- 数据框 (dataframe)是由一个或几个向量和(或)因子构成,它们必须是等长的,但可以是不同的数据类型。
- 列表 (list)列表可以包含任何类型的对象。
-
数据结构相关函数:
- >vector() ##创制一个向量eg. >vector("numeric", length = 10) #创制一个长度为10的数值型向量,向量值缺省,缺省值为0
- >matrix(1:6, nrow = 2, ncol = 3) ##创建一个矩阵,2行,3列,内容为1-6.
- >dim() ##返回对象的维度属性
- >list() ##用来创建list list 具有类似[[1]]的Index。
- >data.frame(foo = 1:4, bar = c( T, T, F, F)) ##创建一个数据框
- >nrow(x) # 返回对象x的行数
- >ncol(x) #返回对象x的列数
- >name(x) # 返回为x的变量名
- >dimname(x) # 为x对象的维度命名
- >attributes() #返回对象属性
-
Subsetting #取子集
- [ # by 用单层方括号来提取向量,列表,因子和矩阵的数据子集,你也可以用-号加括号内的值来剔除你不需要的元素,矩阵的数据按行或者按列可以看成是数字索引,
- [[ # is used to extract elements of a list or a data frame; it can only be used to extract a single element and the class of the returned object will not necessarily be a list or data frame.
- $ # 根据名字用于 list or data frame中提取元素 ;在一定程度上美元符号和双层中括号的用途一样。
-
Tips:
- 当只去矩阵的一组数据时,会返回一个向量. 如果不希望改变数据类型,可以在取子集时设置参数 drop = FALSE.
- [[ 默认使用精确匹配,$ 允许使用局部匹配,使用参数exact = FALSE 在[[ 中进行局部匹配。
- 也可以采用逻辑判断来对数据子集进行操作
- 使用attach函数可以帮助我们在处理多变量数据框时频繁使用$索引。
-
函数 #function: 函数的调用方法, 函数名 +(arguments)
- > getwd() #查看当前R 工作的空间目录
- >setwd() ## 设定工作目录
- >dir() #当前工作目录下的文件
- >print() ##在屏幕上打印
- >set.seed(100)##该命令的作用是设定生成随机数的种子,种子是为了让结果具有重复性。#100,的意思为编号,不是数字, 而是应该理解成“编号为一零零的随机数发生”, 下一次再模拟可以采用二零零(200)或者(111)等不同的编号都行。
- >t() ##实现数据框的行列转换
- >rnorm(x) ##生成x个随机数
- >rm() # 或者remove 用于移除对象
- >ls() # 列出当前所有的变量
- >str() #展示对象、函数、变量的内部结构列表。
-
-
4. 数据的操作
-
数据读取
- >read.table;#最常用的读取数据函数
- 重要的argument参数有:
- file, 文件名
- header,是否有表头,header=T #表示将数据的第一行作为标题。
- sep, 指定分隔符sep=“\t” #表示以Tab键为列分割。
- colClasses, 给数据指定类型
- nrows, 指定读取的行数,提高内存利用率。
- comment.char, 指定注释行的标识,如果没有注释行,设置comment.char=“”
- skip, 指定跳过哪些行。
- stringsAsFactors, should character variables be coded as factors?
- row.names=1 #表示第一列为行名称
- >read.csv, for reading tabular data,默认:sep=","
- >readLines, for reading lines of a text file
- >source, for reading in R code files (inverse of dump )
- >dget, for reading in R code files (inverse of dput )
- >load, for reading in saved workspaces
- >unserialize, for reading single R objects in binary form
- >read.table;#最常用的读取数据函数
-
数据输出保存
- > write.table(data,“newdata.txt“,sep=“\t”)
- >writeLines
- >dump # dump 保留了元数据,输出单个对象 与dget 匹配
- >dput # 输出多个对象,与source 匹配。
- >save
- >serialize
- >pdf(“heatmap.pdf”) # 新建一个pdf文件,0 kb,之后的绘图会存入heatmap.pdf .pdf文件是矢量图,不考虑像素。
- 但是必须保存后才能看
- >png( “heatmap.png”,width=480,height=480)# 可以输出为 png格式,但需要确定像素。
- >dev.off() # 保存并退出
-
与外界的连接 通过文件
- >file,#建立与一个文件的连接,注意,不是打开文件。
- >gzfile,# 建立与"*.gz"文件的连接a file compressed with gzip
- >bzfile,# 建立与"*.bz2"文件的连接a file compressed with bzip2
- >url, # 建立与网页文件的连接a webpage
-
数据操作
- 赋值: <- 或 = 给变量赋值
- c() # 用于创制向量
- rbind(a,b) # 将a、 b按行合并为矩阵
- cbind(a,b) # 将a、 b按列合并为矩阵
- rep() # 生成一组重复值
- 循环与条件判断
- if(){ }else { }# testing a condition
- for (){} # execute a loop a fixed number of times
- while ( ) # execute a loop while a condition is true
- repeat #initiates an infinite loop ,The only way to exit a repeat loop is to call break. #break the execution of a loop
- next: #skip an interation of a loop
- return: #exit a function
- which()
- 运行脚本
- > source(" regression.r") # 通过source()函数运行
- 通过R 脚本编辑器运行 # 路径:文件 > 运行 R脚本文件 > 选择 "regression.r“
- 直接粘贴到R控制台 ctrl+c, ctrl+v
-
-
5. R数据可视化
- ggplot2
-
6. R数据分析
- tidyverse
- 数据计算:
- 统计检验:
暂时总结了这么多,还在学习中……