• 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
  • 相关阅读:
    学习些新东西
    浏览器内的web开发工具
    基于oracle开发的初步接触
    LAMP3 PHP安装
    svn for windows
    PHP替换掉字符串中的非字符
    搭个邮件服务器
    centos下安装mysql
    安装tomcat
    c#线程
  • 原文地址:https://www.cnblogs.com/ppjs/p/9409883.html
Copyright © 2020-2023  润新知