仅用于记录R语言学习过程:
内容提要:
R及R包的下载、安装;
比较好的学习网站;
向量(重要的函数:seq函数、rep函数、factor函数、gl函数、DescTools中的reorder.factor函数)
正文:
一、简介
R语言安装:一般下载最新版,网站上task views,选择可以做的主题进去,选择核心包(包名后面带有core字样的),查看reference manual(相当于是protocol)
查看二:packages
RStudio : rstudio.com 网站下载 R packages ggplot2 knitr tidyr readr lubridate….
推荐的网站:R bloggers popular searches;
rdocumentation.org 专门用于做生信的
GitHub
统计之都
包的下载:在右下方的packages—install packages 中可以下载,如果勾选install dependencies 会自动下载依托包。
plot用于展示做好的图。
导入数据集:import Dataset
install.packages() R的内置函数,按tab键会出现参数,dependencies,默认设置为TRUE
加载github上的包:先下载devtools扩展包,然后可帮助下载GitHub上的包,输入install_github(“包名”) 如install_github(“ lijian13/rinds”)
.labpaths() 可以知道包存放的位置,不需要传入参数
R包卸载:remove.packages(“待卸载的包名”)
二、 向量
ü <-可用于赋值
ü 1:5 代表1 2 3 4 5
ü a <- c(1,2,4,3,5) 有位置之分,从1 开始
ü identical(a,z) 判断两个变量是否一致
ü c() combine,生成向量常用的函数,里面可包含数字,字母,汉字,输出时均带引号。 vector1[-c(2,5,8)],去掉(利用前面的-号)2,5,8下标位置的数字
ü [ ] 用于取数,有位置之分,从1 开始
第三节 数值型向量和逻辑性向量
数值型向量
ü x <- c(1:3,6:10) 可有如此样式
ü class 分类函数 class(x)
n 会返回“numeric”,数值型函数,R中无整型和浮点型的区分,但是确实有integer函数,用于 y <- 1:3 class(y) “integer” 冒号: 重要
ü 数值型向量生成的函数或符号
n 冒号 如 x <- 1:5
n seq函数:用于生成一组具有规律的数值型向量,与sequence函数不同
u seq(from =10, to =1, by =-1)
u seq(1,5,length.out = 8) length.out设置向量长度(可省略打成len);补全参数按tab键。length.out = 8分成7份 4/7,一共生成8个向量
u seq(1,5,along.with = 1:3),跟随,一共生成3个向量,1,3,5,省略了from,to
[1] 1.000000 1.571429 2.142857 2.714286
[5] 3.285714 3.857143 4.428571 5.000000
seq(1,5,len=10)
seq(1,5,along.with = 1:4)
[1] 1.000000 2.333333 3.666667 5.000000
n rep函数:用于生成重复的数值型向量;与repeat函数不同,最好结果c()函数
1. rep(c(1,3),times=5)
[1] 1 3 1 3 1 3 1 3 1 3
2. rep (c(1,3),each=5)
[1] 1 1 1 1 1 3 3 3 3 3
3. rep(c(1,3),len=9)
[1] 1 3 1 3 1 3 1 3 1
4. x<- rep(1,2,times=4)
length(x)
[1] 2
5. x <- rep(1:2,times=4)
length(x)
[1] 8
6. > rep(1,3,times=4)
[1] 1 1 1
7. > x <- rep(c(1,2),times=4)
length(x)
[1] 8
逻辑型向量:TRUE OR FALSE 都是大写,简写为T F,本质也是数值型向量(因为T=1,F=0)
n logit <- rep(c(TRUE,FALSE),len=5)
logit <- rep(c(TRUE,FALSE),len=5)
logit
[1] TRUE FALSE TRUE FALSE TRUE
sum(logit)
[1] 3
TRUE=1,FALSE=0
n 逻辑运算符
> < ==(等于) 一个= 可以赋值,所以不能用于逻辑判断,要用两个等号 不等于 != |
|
logit3 <- c(100==1,200==200) logit3 [1] FALSE TRUE > logit4 <- c(100 != 1) > logit4 [1] TRUE >= <= & 且 | 或 (shift+)管道符 |
|
|
n 返回某一范围的值
x <- seq(1,100,length.out = 20) #1-100内生成20个元素
index <- x >80 #将每个数与80比较
index #返回T和F,因为上一步是逻辑表达式,此处也可以直接把表达式x> 80 写在方括号中,而不需要index,会得到同样的结果
x[index] #返回了大于80的数值,将index作为一种特殊的下标返回到方括号当中,自动返回T的值,把F的值过滤掉
n which函数 返回下标
如which(x> 80),返回了 17 18 19 20
x[which(x > 80)] #返回了大于80的数字
字符串向量
n 要用单引号或者双引号
n 当数值和字符串用一个c()生成时,返回的数字也带有引号了,强行变成了字符串(character) class(string[3]) 返回‘character’ is.character(string) TRUE
n letters R的内置向量,26个小写字母 letters[1:5] (没有等号,因为是取值)‘a’ ‘b’ ‘c’ ‘d’ ‘e’
n LETTERS R的内置向量,26个大写字母 LETTERS[24:28] ‘X’ ‘Y’ ‘Z’ NA NA
NA :not available 缺失值的意思
因子型向量(分类变量,如男女,血型AB0)
n 用factor()函数
u 参数character(),levels,labels = levels,exclude = NA,ordered = is.ordered(x), nmax = NA)
u character:字符串
u levels 生成几个水平的因子型变量 如c(1,2)
u labels 标签:代表的含义,如男性,女性 如c(‘male’,’female’)
u 注意:levels和labels 必须用c() 生成,否则会报错,同时levels会返回labels标签中的内容 即返回: levels:male female。用class(my_fac) 返回’factor’
l > my_fac2 <- factor(LETTERS[1:5],labels = letters[1:5])
l > my_fac2
l [1] a b c d e
l Levels: a b c d e
l 打印出来的内容与labels内容一致了!!!由labels决定了打印的内容
n gl()函数
u 格式是:如:gl( n = 2, k = 5,labels = c(‘control’,’Treatment’))
u 解释:参数n接受一个正整数,表示因子水平的个数(类似levels)
u k 接受一个正整数,表示labels中元素的重复的次数,类似times
u len代表一共的长度,gl( n = 2, k = 1, length =8,labels = c(‘control’,’Treatment’)),结果是control和treatment一共重复4次
u
u 返回的值:
l [1] control control control control control
l [6] treatment treatment treatment treatment treatment
l Levels: control treatment
n 字符串转换成因子 用as.factor() 函数
如:> temp_string <- c('A','B','AB','O')
> my_fac6 <- as.factor(temp_string)
> my_fac6
[1] A B AB O
Levels: A AB B O
n 因子转换成字符串 用as.character()函数
如:> as.character(my_fac6)
[1] "A" "B" "AB" "O"
n 向量间的转化 用as.factor() 和as.character()函数
n nlevels() 用于判断因子型变量中有多少个水平 如:nlevels(my_fac6) 返回 4
n levels() 用于返回水平的具体名称 如levels(my_fac6) 返回 ‘A’ ‘AB’ ‘B’ ‘O’
n reference 把分类变量设置成哑变量 用relevel()函数
格式: relevel(my_fac6,ref = ‘B’)
> my_fac7 <- relevel(my_fac6, ref = 'B')
> my_fac7
[1] A B AB O
Levels: B A AB O
> my_fac6
[1] A B AB O
Levels: A AB B O
把B型设为了参照,与原来的my_fac6不同。需着重注意
n 直接上例子:
u > x <- c('placebo','10mg','20mg','50mg')
u > my_order_fac <- factor(x,ordered = T)
u > my_order_fac
u [1] placebo 10mg 20mg 50mg
u Levels: 10mg < 20mg < 50mg < placebo
解决的办法有两个:一是把placebo换成0mg;另一种办法是加载扩展包:DescTools:可用于生成有序的分类变量 利用包中的reorder.factor()函数
办法一:
> x <- c('0mg','10mg','20mg','50mg')
> my_order_fac <- factor(x,ordered = T)
> my_order_fac
[1] 0mg 10mg 20mg 50mg
Levels: 0mg < 10mg < 20mg < 50mg
办法二:格式:reorder.factor(my_order_fac,new.order = x)
> library(DescTools)
> x <- c('placebo','10mg','20mg','50mg')
> my_order_fac2 <- reorder.factor(my_order_fac,new.order = x)
> my_order_fac2
[1] <NA> 10mg 20mg 50mg
Levels: placebo < 10mg < 20mg < 50mg