• R语言编程语法


    一、基本的概念

    语句(statement):一条单独的R语句或一组复合语句(包含在{}中的一组R语句,使用分号分割);

    条件(cond):一条最终被解析为真或者假的表达式;

    表达式(expr):一条数据或字符串的求职语句;

    序列(seq):一个数值或字符串的求值语句。

    二、R语言之控制结构 

    2.1 循环结构

    2.1.1 for结构

    语法: for (var in seq){statement1;satement2;...}

    说明:直到变量值不再包含在序列中为止

     1 > n<-0
     2 > for (i in seq(1:7)){
     3 + n = n+y[i]*f[i]
     4 + print(n)
     5 + }
     6 #输出
     7 [1] 0
     8 [1] 34
     9 [1] 82
    10 [1] 130
    11 [1] 142
    12 [1] 147
    13 [1] 159

    2.1.2 while结构

    语法:

        i <- seq #(初始化值)

        while(cond(i)){statement1;statement2;...}

     1 > i <- 10
     2 > while(i>0){
     3 + i = i - 1
     4 + print(i)
     5 + }
     6 #输出
     7 [1] 9
     8 [1] 8
     9 [1] 7
    10 [1] 6
    11 [1] 5
    12 [1] 4
    13 [1] 3
    14 [1] 2
    15 [1] 1
    16 [1] 0

    2.2 条件语句

    2.2.1 if-else结构

    语法:

    if (cond){statement1;statement2;...}

    if (cond){statement1;statement2;...}else{statement3;statement4;...}

    说明:

    如果cond为真,则执行第一个{}中的语句,否则执行else之后{}中的语句(如果else存在的情况下)。

    1 > a<-10;b<-9;c<-8
    2 > if(a<b){
    3 + print('hello')
    4 + }else{
    5 + print('R')
    6 + }
    7 #输出
    8 [1] "R"

    2.2.2 ifelse结构

    语法:

    ifelse(cond, statement1, statement2)

    说明:

    如果cond为真,则执行statement1,否则执行statement2

    1 > ifelse(b>c, print('hello'),print('R'))
    2 #输出
    3 [1] "hello"

    三、函数

    语法:变量名 = function(变量列表){函数体}

    myfunction <- function(arg1, arg2, ...){

    statements

    return(object)

    }

    说明:

    1.  function(){}创建函数;

    2. 函数的调用方式,在变量名后面加上小括号'()',如myfunction(arg1, arg2, ...);

    3. 函数的调用与其参数的位置和名字有关,可以按位置调用,按名字调用,也可设置默认参数;

    4. 函数是一个‘闭包’,只在函数参数和函数体中定义的变量,且在定义函数之前未定义过该变量时,这些变量都是专属于该函数的局部变量。当函数运行结束后,这些变量也自动消失,不能在后续的分析中调用,也不会引起命名冲突。我们可是使用超赋值符号“ <<-”,将局部变量改变为全局变量,供后续分析。

    5. 延伸:在R语言中,{statement1;statement2; ...}定义了一个闭包,在该闭包中的变量都是一种局部变量,一旦执行结束,这些变量也将消失。如果要在后续分析中继续使用,则使用超值赋值符号。同时,这些变量名也不会引起命名冲突。

  • 相关阅读:
    合数分解为质数的乘积模板
    P2626 斐波那契数列(升级版)(合数的质数分解, 大数为素数的概率十分小的利用)
    1305 Pairwise Sum and Divide
    1344 走格子 (前缀和)
    1347 旋转字符串
    E
    pek (北大oj)3070
    数学中各种矩阵收集(转至其他博主)
    (数论)逆元的线性算法
    洛谷P2627 修剪草坪 题解 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/xiaofeiIDO/p/6005832.html
Copyright © 2020-2023  润新知