• R语言语法基础一


    R语言语法基础一

    Hello world

    #这里是注释
    myString = "hello world"
    print(myString)
    [1] "hello world"
    

    基本数据类型

    print(class(TRUE)) #logical
    print(class(5)) #Numeric
    print(class(2L)) #Integer
    print(class(2+5i)) #Complex
    print(class("hello")) #Character
    print(class(charToRaw("hello"))) #Raw
    

    对象类型

    vector向量,使用c函数创建

    apple = c('red',"green","yellow")
    print(apple)
    [1] "red"    "green"  "yellow"
    

    List列表,可以包含不同类型的元素

    list1 = list(c(2,5,3),21.3,sin)
    print(list1)
    [[1]]
    [1] 2 5 3
    
    [[2]]
    [1] 21.3
    
    [[3]]
    function (x)  .Primitive("sin")
    

    Matrices矩阵

    创建二维数据集

    M = matrix(data = c('a','b','c','d','e','f'),
               nrow = 2, 
               byrow = TRUE)
    print(M)
         [,1] [,2] [,3]
    [1,] "a"  "b"  "c" 
    [2,] "d"  "e"  "f"
    

    Array数组

    数组相比矩阵,能够具有任意数量的维度

    a = array(c(1,2),dim = c(3,3,2))
    print(a)
    , , 1
    
         [,1] [,2] [,3]
    [1,]    1    2    1
    [2,]    2    1    2
    [3,]    1    2    1
    
    , , 2
    
         [,1] [,2] [,3]
    [1,]    2    1    2
    [2,]    1    2    1
    [3,]    2    1    2
    

    Factor因子

    apple_colors = c('g','g','y','r','r','r','g')
    factor_apple = factor(apple_colors)
    print(factor_apple)
    print(nlevels(factor_apple)) #nlevels函数是用来求level的
    
    [1] g g y r r r g
    Levels: g r y
    
    [1] 3
    

    DataFrame数据帧

    BMI = data.frame(
        gender = c("Male","Male","Female"),
        height = c(152,171.5,165),
        weight = c(81,93,78),
        age = c(42,38,26)
    )
    print(BMI)
    
      gender height weight age
    1   Male  152.0     81  42
    2   Male  171.5     93  38
    3 Female  165.0     78  26
    

    变量

    命名规则

    变量名 合法性 原因
    var_name2. 有效 有字母,数字,点和下划线
    VAR_NAME% 无效 有字符'%'。只有点(.)和下划线允许的。
    2var_name 无效 以数字开头
    .var_name, var.name 有效 可以用一个点(.),但启动点(.),不应该后跟一个数字。
    .2var_name 无效 起始点后面是数字使其无效。
    _var_name 无效 开头_这是无效的

    值得注意的是,a和a.i没有任何关系

    a = 1
    b = 2
    c = 3
    #cat函数可以连接多个(中间有空格隔开)
    #print函数只能输出一个,但信息更多
    cat(a,b,c)
    1 2 3
    

    ls()函数可以列出当前工作空间的变量,可以用很多方法搜索,排序(支持正则)

    ls(pattern = "a.[0-9]")
    [1] "a.1" "a.2"
    

    rm()删除变量

    rm(var1) #删除变量var1
    rm(list = ls()) #删除一个列表的变量
    

    运算符

    算术运算

    都是两个向量对齐,一一计算。如果不对齐会报warning(循环对齐),如果另一个是数字,会自动匹配

    • 加法:+
    • 减法: -
    • 乘法: *
    • 浮点数除法: /
    • 取模: %%
    • 乘除求商: %/%
    • 第二个是第一个的指数: ^

    关系运算

    也是两两依次比较

    • 大于:>
    • 小于:<
    • 等于:==
    • 大于等于:>=
    • 小于等于:<=
    • 不等于:!=
    rm(list = ls())
    v1 = c(2, 5.5, 6)
    v2 = c(8, 3, 6)
    
    v1 == v2
    any(v1 < v2)
    all(v1 > v2)
    
    [1] FALSE FALSE  TRUE
    [1] TRUE
    [1] FALSE
    

    逻辑运算

    &,|,!就是判断0还是非0,返回布尔值向量

    &&,||只考虑两个向量的首元素,返回一个TRUE或者FALSE

    其他运算

    a = 1:5 #产生一个序列向量
    c(1,2) %in% a #依次判断元素是否包含在向量中
    t(a) %*% a #说明a默认为列向量,这里求a^T * a
    

    条件控制

    If

    if (TRUE)
    {
        print("YES")
    } else #这种写法,else不能单独起一行
    {
        print("NO")        
    }
    
    #三目运算符
    x = c(-1,-2,3,4)
    x = ifelse(x<0, 0, x) #relu简单实现
    print(x)
    

    Switch

    x = switch(
        3,
        "first",
        "second",
        "third",
        "fourth"
    )
    print(x)
    

    包管理

    .libPaths() #查看R语言库的位置
    library() #列出已经安装的包
    search() #列出当前环境中已经加载的包
    install.packages("Package Name") #安装包
    library(XML) #装载包到当前环境
    

    循环

    #for循环
    a = 1:5
    for(i in a)
        print(i)
    #repeat
    total = 0
    repeat 
    {
        total = total + 1;
        print(total);
        if (total > 6)
            break;  
    }
    #while
    x = 1
    while (x < 5)
    {
        x  = x + 1
        print(x)
    }
    

    next语句代替了continue

    小结

    R的基本语法暂时总结到这里,下一次继续学习函数之后的部分。

  • 相关阅读:
    Less学习笔记
    如何在网页启动Windows服务
    让VS2010记住TFS的登陆用户名和密码
    调式WP程序报0x80131500错误的解决办法
    FizzBuzzWhizz是算法题吗?我从设计的角度去解决的。
    基于Roslyn的远程任务平台
    优雅就一个字——设计模式之数据上传接口
    关于反射优化的疑问,单次调用时直接反射要快于委托调用反射?
    用VC++11中编译libthrift项目
    grunt初体验
  • 原文地址:https://www.cnblogs.com/fanghao/p/7612818.html
Copyright © 2020-2023  润新知