R语言学习笔记之一

仅用于记录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

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

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’)

注意: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决定了打印的内容

gl()函数

格式是:如:gl( n = 2, k = 5,labels = c(‘control’,’Treatment’))

解释:参数n接受一个正整数,表示因子水平的个数(类似levels)

k 接受一个正整数,表示labels中元素的重复的次数,类似times

len代表一共的长度,gl( n = 2, k = 1, length =8,labels = c(‘control’,’Treatment’)),结果是control和treatment一共重复4次

 

返回的值:

l  [1] control   control   control   control   control  
l  [6] treatment treatment treatment treatment treatment
l  Levels: control treatment

字符串转换成因子 用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

 

因子转换成字符串  用as.character()函数

如:> as.character(my_fac6)
[1] "A"  "B"  "AB" "O" 

 

向量间的转化  用as.factor() 和as.character()函数

nlevels()  用于判断因子型变量中有多少个水平 如:nlevels(my_fac6)   返回 4

levels()   用于返回水平的具体名称 如levels(my_fac6) 返回 ‘A’ ‘AB’ ‘B’ ‘O’

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不同。需着重注意

直接上例子:

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
原文地址:https://www.cnblogs.com/ppjs/p/9409883.html