• R语言学习笔记(一)


    Question:

    1.R语言与C语言语法上有什么不同,有什么相同?

    所有R代码都用于操作对象,和C++一样是面向对象的语言,C是面向过程的语言,R中有每一种数据结构相当于C++中的类,每个数据相当于一个对象;

    有数值向量形式的对象:c(1,2,3,4,5)

    有字符型对象:“This is the world”

    有各种元素形成的列表样式的对象:list(c(1,2,3),"This is the world")

    数值本身也是一个对象:1  2 3

    函数也是一个对象:f = function(x,y){x*y};

               f(2,3)

             输出:6

    R语言中赋值除了=可以赋值外还可以<-

    例如x <- 1; y <- c(1,2,3); 个人习惯还是用等号把 =

    R语言中的函数也是作用于形参,而非实参,和C语言相似

    一定区间的向量可以简写为1:n,表示从1到n的闭区间的整数所形成的向量

    向量和C语言中的数组很像也和vector很像,但是起始是从1开始而不是从0开始。

    R语言中也有强制类型转换,自动匹配所需要的数据类型,会将特殊类型转变为一般的类型

    有高一级转向低一级:logical < integer<numeric<complex<character(字符串类型)<list

    如果想知道x的数据类型,输入 typeof(x) 和C语言中typedef很像,只是typedef相当于给数据类型取一个别名

    2.R语言中函数如何定义?

    对于R语言中的每一个对象,都有对应的函数对该对象进行操作,这一点类似于C;

    而不是C++,因为C++把函数也封装到了类里,而R并没有;

    例如length(v)得到v的长度,并且这个长度还可以被用户所改动,更有利于修改分析数据

    quote(f) f为用户输入的表达式,返回一个language对象

    as(l,“list”) 将language对象转变为一个list

    整数 n:n 序列得到;如果直接n则得到的是一个默认的双精度浮点数

    或者用as 强制类型转化为“integer”

    as(1, "integer")

    2^1024 = Inf大小有限制,并且精度上也有限制,例如(2^1023+1) == 2^1023 得到是TRUE 一个浮点数长度为1024bit吗 而C语言中浮点数长度为8bit*4,(4个字节),

    而双精度较高8bit*8 (8个字节),所以C语言中表示的数范围小很多,R语言中的数有将近128byte (128个字节),处理大数据很方便,但是大数据会损失一定的精度

    R中取模 用%% 而不是%,得到余数

    整除用%/%,得到商

    相当于自带math.h

    max(),min(),sqrt()常用的都有。

    自己定义函数可以用

    f = function(x1,x2,...){

     if() ...

     else if() ...

    else if()  ...

    else ...

    }

    同样也有switch操作符

    switch(x, a = ..., b = ...., c= ..., ...) 最后一个相当于default;a,b,c 相当于if(x ==‘a’) switch操作只限于字符串,

    和C中很像switch(ch) case '1':...

    利用函数可以写一个递归求factorial的函数 gamma(N) = factorial(N)

    f = function(n){

    if(n==1) 1

    else f(n-1)*n

    }

    R语言中没有++ += 这类符号,只能老实写i=i+1

    3.R中的数据结构有哪些?

    R中存在一些特殊值的符号:

    NA: 表示缺失值,相当于C中的NULL;

    NAN: 计算机产生的一个无意义的结果;not a number 例如Inf-Inf;

    Inf 表示无穷大;1/0 = Inf , 1/(-0) = -Inf

    NULL:在R语言中表示的是一个null对象,常用在函数的参数中,表示该参数没有被赋值

    二维数组:(矩阵)matrix

    matrix(data = c(),nrow = ,ncol = ) 按列排nrow*ncol不能超过data的容量

    m[1:2,]表示一二两行

    m[m,n]表示m,n处的值

    更高维数组:

    array(data = ,dim = c(x,y,z))表示三维长宽高分别为x,y,z 从底层向上排,每一层按列排

    4.R中的循环,随机数,遍历,如何实现?

    循环的实现:

    和C类似 只是将continue改为了next

    i = 1

    while(i<10){print(i);i=i+1} #while 循环 #作注释

    for循环:

    和C不同,自动遍历一个list或者序列seq(from, to ,by步长)

    for( i in seq(5,25,3)) print(i) #from to 所形成的的为闭区间,包括端点

    repeat循环:

    需要if() break才能退出循环;

    5.R中如何导入excel数据?

    其他:

    R中虚数表示为a+bi,中间无乘号 i 应该写成1i;

    x的n次方表示为:x^n; ^在C语言中是抑或符号

    R语言和python一样属于交互型的语言,输入一个表达式,系统响应对应的输出;

    交互 约等于 解释;解释用户输入的对象和对象的操作,并输出;用户输入的是表达式

    R语言 第五章和第六章 语言概述+语法部分完

  • 相关阅读:
    charindex代替like并非"更快更全面"
    SQLServer2005中的几个统计技巧
    SQLServer获取Excel中所有Sheet
    SQLServer2005的查询独占模拟
    SSAS事实表和维度表数据类型必须一致
    monodevelop 出现has line endings which differ from the policy settings.的解决方法
    mono for android Main.axml
    vs2010 错误提示框:文件加载 使用 简体中文(GB2312
    在Virtual Machine上运行Hello China的方法和工具
    embed基本语法
  • 原文地址:https://www.cnblogs.com/raiuny/p/12676902.html
Copyright © 2020-2023  润新知