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语言 第五章和第六章 语言概述+语法部分完

原文地址:https://www.cnblogs.com/raiuny/p/12676902.html