zoukankan      html  css  js  c++  java
  • 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; ...}定义了一个闭包,在该闭包中的变量都是一种局部变量,一旦执行结束,这些变量也将消失。如果要在后续分析中继续使用,则使用超值赋值符号。同时,这些变量名也不会引起命名冲突。

  • 相关阅读:
    神奇的HTML5画图应用
    Eclipse REST 库使用
    在应用中使用Ext Loader
    新浪微博XSS攻击事件
    数字图像处理空间变换
    安装制作不用愁—Wise installation入门教程
    ExtJS 4中自定义Grid列标题的对齐方式
    页面的兼容性从认识<!DOCTYPE>开始
    ExtJS 4.1有什么值得期待?
    ExtJS应用架构设计(二)
  • 原文地址:https://www.cnblogs.com/xiaofeiIDO/p/6005832.html
Copyright © 2011-2022 走看看