R语言学习.first
Posted raiuny
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言学习.first相关的知识,希望对你有一定的参考价值。
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语言 第五章和第六章 语言概述+语法部分完
以上是关于R语言学习.first的主要内容,如果未能解决你的问题,请参考以下文章