首页 > 编程知识 正文

R语言基本语法,r语言是什么语言

时间:2023-05-06 10:05:04 阅读:174623 作者:4998

r语言于1997年成为GNU项目的开源免费

r是数据分析领域的语言

小巧灵活,通过扩展包增强功能

绘图功能

代码很简单

开发环境

R RStudio

1、数据类型

字符

数字类型、实数或小数

整数

complex多型

逻辑逻辑类型类似于布尔学习

2、数据结构

载体

因子

数组

矩阵

数据帧数据框

列表

一维:矢量、因子矢量为数值型变量,因子对应分类变量

二维:矩阵、数据框矩阵中元素的数据类型一致,数据框由向量组成,每个向量中的数据类型一致,向量之间的数据类型可以不一致,类似于表结构。

三维:数组、列表数组相对较少使用,多维数据结构列表可以包含上述所有数据结构

3、矢量

向量表示一系列数据,数据类型匹配,向量可以表示行或列

c )例如:

:例如: 1:10

seq(from )、to )、by )、length.out )、along.with ),长度与指定的向量长度相同)

提取子集:

数字下标(正数3360表示获取指定的要素,从1开始,负数3360表示排除) ) ) ) ) ) )。

which ) )函数(按条件过滤) )。

#矢量

(x1 )

(x2 )

x3

x4

x5

x5[1:5]

X5 [ c (1,2,3,4,5 ) ]

X5 [-1:-5 ]请勿添加#1- 5的要素

which(x55 ) #大于5的矢量下标

x5[which(x510 ) ] #大于5的矢量值

4、因子

因子用于分类变量,有类别

factor () )

总帐()。

#因子

f

f

美国类(f )视图因子

f

UNclass(f ) #

f1

f1

UNclass(F1 )。

5、矩阵

行和列

生成矩阵

矩阵() )

从向量派生

由向量的组合生成

操作

访问元素

矩阵命名

矩阵运算

矩阵加法

1 .矩阵n的各元素加n

2 .矩阵矩阵对应元素加法

矩阵乘法

1 .矩阵*n将各元素乘以n

2 .矩阵*矩阵矩阵的乘法(矩阵1 m行*n列矩阵2 p*q要求n==p的结果矩阵为m*q ) ) ) ) ) ) ) ) )。

3 .矩阵元素*将矩阵元素对应的元素相乘

单位矩阵

元素都是1 n*n方阵

对角矩阵

对角元素为1的其馀为0 n*n方阵

矩阵置换

n*m m*n

#矩阵

#创建矩阵:

#方法1 :使用矩阵(nrow=?ncol=? )

x

x

x

x

x

x

#方法2 :通过dim (a ) dim传递向量

A

dim(a ) )。

x

#方法用rbind或cbind拼接

x

y

z

m1=rbind(x,y,z ) #以行为单位进行连接

m2=cbind(x,y,z ) #以列为单位进行连接

m1

m2

获取#矩阵元素

x

x

x [ 1,2 ] #第1行第2列

第x[1,]#1行

第x[,2] #列

x[,c (2,3,4 ) ]#2)第3,4列

x [ c (1,2 ),]#1,第2行

x [ c (1,2 ),2:4] #第一行第二行第三列

#矩阵命名

是colnames(x )

是Rownames(x )

x['R1 ',' C1']

x[c(R1 ),) R2 ),c ),) C2 ) ]

#矩阵运算

m1

m2

m1

m2

#矩阵加法

m1 10 #矩阵n

m1 m2

#矩阵+矩阵

#矩阵乘法

m1*10  #矩阵*n

m1*m2  #矩阵对应元素相乘

m1 %*% t(m2)  #矩阵*矩阵 矩阵乘法 行列相乘

#对角矩阵

diag(4)  #4*4矩阵 对角元素都为1

diag(c(1,2,3,6))  #4*4矩阵,对角元素为1,2,3,6

x

diag(x) #显示矩阵x的对角元素值

#解方程组

m

m

b

solve(m,b) #m %*% x=b 求x

6、数据框

记录与域

#数据框

#创建数据框

a

fy = runif(10,10,20),

fmonth = 1:10 )

a[1,1]

a[1,]

a[,2]

a$fx  #通过$fx取列信息

a[[1]]#通过[[]]获取列信息

search()  #查询

attach(a)  #attach 数据到 search路径

fx        #直接使用

detach(a)  #detach 数据

search()  #查询

a

#新增修改列

a

fz=11:20})

#新增列

a$fz = 11:20

a$fz = a$fx+a$fy

#列存在则修改

a$fx = 1:10

#查询数据集

b = subset(a,fx>1&fmonth==8,select=c(fx,fmonth))  #select 列过滤,fx>1&fmonth==8 行过滤

b=edit(a)  #修改后的数据集赋值给另一个数据集

b

fix(a)    #直接修改数据集内容

a

7、列表

成分

创建列表

list()

操作

列表成分

[[]]

$

#列表

#创建列表

a

names(a)

c

c=a['y']  #在列表中通过[]取出的对象类型还是列表

c[2,1]

class(c)  #查看类型为list

c=a[['y']] #在列表中通过[[]]取出的对象类型为实际对象类型矩阵

c[2,1]

class(c)  #查看类型为matrix

a$y[2,1]  #获取矩阵的元素

8、数组

array

#数组

(a=array(1:60,c(3,4,5)))  #数组三维

a[1,2,3]

9、数据类型转换

检查数据类型 is.开头

is.character

转换数据类型 as.开头

as.character

x=c(1:2,'hello',T)

x

mode(x)      #查看数据类型

class(x)    #查看数据结构

is.vector(x)

y

mode(y)      #数据类型是numeric

class(y)    #数据结构是matrix

ydataframe

y

10、分之结构

if...else...结构

if(condition){...}

else{...}

ifelse函数

#分支结构

(Brand

#"Brand1" "Brand2" "Brand3" "Brand4" "Brand5" "Brand6" "Brand7" "Brand8" "Brand9"

(PName

(Mem

#"1G" "2G" "4G" "1G" "2G" "4G" "1G" "2G" "4G"

(Feq=rep(c('2.2G','2.8G','3.3G'),each=3))

(Price=rep(c(1000,2000,5000),3))

PC=data.frame(Brand,PName,Mem,Feq,Price)

##分支结构

#if..else

PC

PC$PD=rep('Cheap',9)

for (i in 1:nrow(PC)){    #1:nrow(PC)从第1行到最后一行

if (PC[i,'Price']>3000){ #取值进行比较

PC[i,'PD']='Expensive' #修改值

}

}

PC

#ifelse函数

PC$PD2=ifelse(PC$Price>3000,'Expensive','Cheap')  #向量化运算

PC

c

11、循环结构

for(n in x){...}

while(condition){...}

repeat{...break}

break next

#循环结构

for (x in 1:5){

print (x^2)

}

i=1

while (i<6){

print (i^2)

i=i+1

}

i=1

repeat {

print (i^2)

i=i+1

if (i>5) break

}

12、函数

自定义函数

myfunc =function(par1,par2,...){

...

}

引用函数文件

source('D:/basic.R', encoding = 'UTF-8')

查看源码

myfunc #终端显示

page(myfunc) #用第三方编辑器查看

#函数

myadd=function(a,b,c){

return (a+b+c)

}

mystat=function(x,na.omit=FALSE){

if (na.omit){

x=x[!is.na(x)]

}

m=mean(x)

n=length(x)

s=sd(x)

skew=sum((x-m)^3/s^3)/n

return (list(n=n,mean=m,stdev=s,skew=skew))

}

13、向量化运算和apply家族

#向量化

x=1:5

(y=x^2)

(y=matrix(1:16,4,4))

(z=y^2)

(x=1:5)

(y=11:15)

(x+y)

y>=13

ifelse(x%%2==0,'A','B')

x=data.frame(pv=rnorm(100,20,3),

uv=rnorm(100,40,4),

ip=runif(100,40,50))

apply(x,MARGIN = 2,mean)

apply(x,MARGIN = 2,quantile,probs=c(0.1,0.5,0.9))

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。