R语言笔记

R语言相关的一些笔记。

有用的R包

rmarkdown

可用来编程式写作,可实现交互式,支持R和python,还可以用来做网站

slidify

可用来做幻灯片,用R code和各种包实现交互式

shiny

可用来做交互式的App

formatR

可以对R 语言进行整理,不必担心代码的乱七八糟.现在Rstudio已经集成了这个包可以使用 shift+ctrl(cmd)+A进行代码整理

magrittr和pipeR

使得可以在R中使用管道操作符%>%%>>%

foreach

简化循环语句 %do%
并行运算 %dopar%

parallel,doSNOW和doMC

并行运算
doParallel package is a merger of doSNOW and doMC
parallel is a merger of snow and multicore
doMC on a Linux or Mac OS X computer, doParallel on a Windows computer, and doMPI on a Linux cluster, but doParallel does work on all of those platforms.

rbenchmark

比较

data.table

升级版的data.frame,有key

写一个自己的包

需要的包

devtools
roxygen2

  1. create("your_package_name")
    生成相应的目录,将你的.R文件拷贝到your_package_name/R目录下
  2. document("your_package_dir")
    自动生成function的描述,使用说明
  3. install("your_package_name")
    安装你的包

R安装包相关

查看library安装的路径

.libPaths()

查看已安装的包

library()

查看已加载的包

search()

安装bioconductor包

1
2
source("http://bioconductor.org/biocLite.R")
biocLite("Biobase")

从source用命令行安装

R CMD INSTALL matchprobes_1.16.0.tar.gz

console下安装包

install.packages("rmarkdown",repos="http://cloud.r-project.org/")
repos可指定镜像地址

升级包

update.packages()

R版本升级后如何升级原先的包

R的版本更迭之后,可以把老R包复制到新版本的library目录下,然后运行update.packages(checkBuilt=TRUE, ask=FALSE)

删除已安装的包

console下
remove.packages(pkgs_name)
命令行下
R CMD REMOVE chipchip

数据操作

如何取子集

逻辑向量

1
2
3
#这将创建(或重建)一个含x 中非缺省且次序不变的元素的对象y。注意,如果x
#含有缺省值,y 在长度上将会比x 短
y <- x[!is.na(x)]
1
2
3
#将创建一个对象z 并且把向量x+1 的值赋给它,其中要求x 中对应的元素既非缺
#省又是正值。
(x+1)[(!is.na(x)) & x>0] -> z

正整数向量

1
2
#选择x 的前10个元素(我们假定length(x) 长度不小于10)
x[1:10]
1
2
#产生一个长度为16,由"x", "y", "y", "x" 重复4次而构成的向量。
c("x","y")[rep(c(1,2,2,1), times=4)]

负整数向量

1
2
#将x 除开始五个元素外的其他元素都赋给y
y <- x[-(1:5)]

字符串向量

这可能仅仅用于一个对象可以用names 属性来识别它的元素。这种情况下,名字向量的子向量可以像上面第二条提到的正整数标签一样使用。

1
2
3
> fruit <- c(5, 10, 1, 20)
> names(fruit) <- c("orange", "banana", "apple", "peach")
> lunch <- fruit[c("apple","orange")]

移除某行(列) 数据

使用函数下标

1
2
3
4
5
6
x <- data . frame (matrix ( 1 : 3 0 , nrow = 5 , byrow = T) )
dim( x )
print ( x )
new.x1 <- x[-c ( 1 , 4 ) , ] #row删除前4行
new.x2 <- x[ ,-c [ 2 , 3 ] ] #col删除2,3列
new.x1; new.x2

移除有NA或者NAN的行

na.omit(x)->x

如何根据共有的列将两个数据框合并

我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同。处理的办法就是使用merge(x, y ,by.x = ,by.y = ,all = )函数。

矩阵或数据框合并

列合并cbind()和行合并rbind()

字符串处理相关函数

分割字符串strsplit

字符串连接paste

计算字符串的字符数nchar

字符串截取或替换substr(x, start, stop)

字符串大小写转换tolower(x) toupper(x)

字符完全匹配grep()

字符不完全匹配agrep()

字符替换gsub()

文件读写

读压缩文件

read.table(gzfile("GSM1085211_mC_calls_Bor_4_bud.tsv.gz"))->x

线性回归

一元线性回归

1
2
3
4
5
6
7
lm(y ~ 1+x)-> lm
summary(lm) #提取结果
anova(lm) #返回方差分析表
coef(lm) #返回模型系数
deviance() #返回残差平方和
predict() #预测
abline(lm(y~1+x))

广义线性回归

glm()

R作图相关

分割画布

1
2
layout(matrix(c(1,2),2,1))
par(mfrow= c(3,3))

add smooth line

lines(smooth.spline(plot.x, plot.y, spar=0.3))

画散点图

数据多时用
smoothScatter(x,y)

数据少时可用
plot(x,y, col = densCols(x,y), pch=20)

调整坐标轴刻度间隔

R下画图,常常需要针对特定的要求标识刻度,调整刻度的密度。实际上可以用一个简单的参数来控制:xaxp

具体做法如下:
在作图函数如plot中,添加xaxp=c(33900000,34100000,10000),依次为最小刻度值,最大刻度值,刻度单位间隔值。

测试