美文网首页
R语言 学习笔记(一)

R语言 学习笔记(一)

作者: _ikiru_ | 来源:发表于2018-08-17 18:22 被阅读0次

    写在前面:写的比较简单,把基本知识点捋了一遍,主要是用来给自己理清思路和复习用的,适合有一定编程基础的初学者来看。


    R语言 基本语法

    1. “Hello World!”

    myString <- "Hello, World!"
    print ( myString)
    

    2. 怎么打注释?

    # This is how to quote.
    

    R语言 数据类型

    数据类型 元素 维度
    向量 Vector 同类型元素 一维
    列表 List 不同类型元素 一维
    矩阵 Matrix 同类型元素 二维
    数组 Array 同类型元素 多维
    因子 Factor 向量和向量不同值的标签 一维
    数据帧 Data Frame 不同类型相同长度的向量 二维

    1. 都有什么常用的数据类型?
    逻辑型: TRUE, FALSE
    数字:22.5, 5
    整型:25L, 0L
    复合型: 3+2i
    字符型:'a', "Hello", '25.4'
    原型:举个例子

    v<-charToRaw("Hello!")
    print(v)
    

    输出结果:

    [1] 48 65 6c 6c 6f 21
    

    2. 向量Vector怎么用?

    Vector由多个同类型的元素组成。

    animal <- c('cat', 'dog', 'rabbit')
    

    3. 列表List怎么用?
    List可以由多个不同类型的元素组成。

    list_ <- list(c(2,3,4),22,sin)
    

    4. 矩阵Matrix怎么用?
    Matrix是一个二位数据集。nrow代表行(横着有几行),ncol代表列(每行有几个)。
    byrow true的时候按行填充(如下),否则按列填充。

    M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)
    

    输出结果:

         [,1] [,2] [,3]
    [1,] "a"  "a"  "b" 
    [2,] "c"  "b"  "a" 
    

    5. 数组Array怎么用?
    Array是可以有多个维度的矩阵。Matrix可以视为一个二维的Array。
    创建Array的方式:

    a <- array(c('green','yellow'),dim = c(2,2,2))
    
    a<-c('green', 'yellow', 'green', 'yellow', 'green', 'yellow', 'green', 'yellow')
    dim(a)<-c(2,2,2)
    #或者a<-array(a, dim=c(2,2,2))
    

    输出结果:

    , , 1
         [,1]     [,2]    
    [1,] "green"  "green" 
    [2,] "yellow" "yellow"
    , , 2
         [,1]     [,2]    
    [1,] "green"  "green" 
    [2,] "yellow" "yellow"
    

    6. 因子Factor怎么用?
    Factor表示了一个向量和向量中不同值的标签。

    v <- c(1,1,1,1,2,2,4,3,3,3)
    factor_v <- factor(v)
    print(factor_v)
    print(nlevels(factor_v))
    

    输出结果:

     [1] 1 1 1 1 2 2 4 3 3 3
    Levels: 1 2 3 4
    [1] 4
    

    7. 数据帧Data Frame怎么用?
    Data Frame可以由不同类型、相同长度的向量组成。

    BMI <- data.frame(
      gender = c("Male", "Male","Female"),
      height = c(152, 171.5, 165),
      weight = c(81,93, 78),
      age = c(42,38,26)
    )
    

    输出结果:

      gender height weight age
    1   Male  152.0     81  42
    2   Male  171.5     93  38
    3 Female  165.0     78  26
    

    R语言 变量

    1. 怎么赋值?
    用"=" "<-" "->"赋值
    2. 一些常用的函数
    print():打印 print(var)
    cat():打印多个 cat("var is ", var)
    ls():查找变量,匹配变量名
    rm():删除变量
    class():输出变量类型
    is():判断类型


    R语言 运算符

    1. 算术运算符
    +、-、*、/、%%(求余)、%/%(相除求商)、^(指数)
    2. 关系运算符
    >、<、=、<=、>=、!=
    3. 逻辑运算符
    判断两个向量的所有元素:&、|、!、
    判断两个向量的第一个元素:&&、||
    4. 赋值运算符
    <-、=、<<-、->、->>
    5. 其他运算符
    :(为向量顺序创建一系列数字)、%in%(某元素是否属于某向量)、%*%(矩阵与其转置矩阵相乘)


    R语言 决策

    1. if

    if(boolean_expression) { }
    

    2. if...else

    if(boolean_expression 1) { } 
    else if( boolean_expression 2) { }
    else { }
    

    3. switch

    switch(expression, case1, case2, case3....)
    

    R语言 数据重塑

    1. 如何将多个向量合并成一个数据帧?

    fruit <- c("Apple", "Orange")
    num <- c(1,2)
    list1 <- cbind(fruit, num)
    

    2. 如何将两个数据帧合并在一起?

    1. all.data <- rbind(data1, data2):纵向合并(表里面添加新行)
    2. merge():
      使用的数据如下:
    ID1 <- c(1,2,3,4)
    ID2 <- c(1,2,7,8)
    name1 <-c("Peter","Tony","Steve","Tom")
    name2 <- c("Peter","Tony","Natasha","Bruce")
    student1 <- data.frame(ID1,name1)
    student2 <- data.frame(ID2,name2)
    

    ①通过ID1、ID2把两个数据帧连接起来,取ID的交集
    输出结果:

    total_student<-merge(x = student1, y = student2, by.x="ID1", by.y = "ID2")
    
      ID1 name1 name2
    1   1 Peter Peter
    2   2  Tony  Tony
    

    ②通过ID1、ID2把两个数据帧连接起来,取ID的并集,空缺位置填充为NA

    total_student<-merge(x = student1, y = student2, by="ID1", by.y = "ID2", all = T)
    

    all = F时是交集;all.x = T时左连接(只有1、2、3、4);all.y = T时右连接(只有1、2、7、8)
    输出结果:

      ID1 name1   name2
    1   1 Peter   Peter
    2   2  Tony    Tony
    3   3 Steve    <NA>
    4   4   Tom    <NA>
    5   7  <NA> Natasha
    6   8  <NA>   Bruce
    

    3. 如何拆分数据
    使用melt():
    注意需要安装reshape这个包。
    (使用的数据代表学生期中期末考的成绩。)

    install.packages("reshape")
    library(reshape)
    Name <- c("Tony", "Tony", "Tony", "Steve", "Steve")
    Test <- c("Mid","Final","Final","Final", "Final")
    Score <- c(100, 100, 60, 80, 95)
    Transcript <- data.frame(Name, Test, Score)
    molten_Transcript <- melt(Transcript, id = c("Name", "Test"))
    print(molten_Transcript)
    

    除Name、Test以外的列被转换为了多行展示:

       Name  Test variable value
    1  Tony   Mid    Score   100
    2  Tony Final    Score   100
    3  Tony Final    Score    60
    4 Steve Final    Score    80
    5 Steve Final    Score    95
    

    4. 如何重构数据
    使用cast():
    cast()中公式左边的变量会作为输出的每一列,右边的变量是因子,每个Level都会在输出中作为一列。
    (把期中期末的成绩加和)

    recasted_Transcript <- cast(molten_Transcript, Name+Test~variable,sum)
    print(recasted_Transcript)
    

    输出结果:

       Name  Test Score
    1 Steve Final   175
    2  Tony Final   160
    3  Tony   Mid   100
    

    相关文章

      网友评论

          本文标题:R语言 学习笔记(一)

          本文链接:https://www.haomeiwen.com/subject/qwrtiftx.html