R语言 基本语法 附综合性例子

R语言:

R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。

创建向量和矩阵:

基本属性:
赋值:
x1=c(2,4,6,8,0)
x2=c(1,3,5,7,9)
向量长度:
length(x1)
变量类型:
mode(x1)

组成二维数组:
(Row连接)
rbind(x1,x2)
(Column连接)
cbind(x1,x2)

基本计算:
输出1-100:
x<-c(1:100)
平均数:
mean(x)
求和:
sum(x)
最大数:
max(x)
最小值:
min(x)
连乘:
prod(x)
方差:
var(x)
标准差:
sd(x)

寻求帮助:
help(matrix)

产生向量:
产生1-10:
a=1:10
产生0-9:
a=1:10-1
产生1-10(*2):
a=1:10*2
展示a向量第5个元素:
a[5]
展示a向量除第5个元素以外的:
a[-5]
展示前5个元素:
a[1:5]
展示除前5个元素以外的元素:
a[-(1:5)]
展示<20的元素:
a[a<20]
展示>30 & <50的元素:
a[a>30 & a<50]

Seq()函数:
产生5-20:
seq(5,20)
产生公差2,5-121:
seq(5,121,by=2)
产生5-121,平均的公差的10个数:
seq(5,121,length=10)

产生字母序列:
按顺序产生26字母,多余的显示NA:
let
ters[1:30]
 
   
which()函数:
a=c(2,3,4,2,5,1,6,3,2,5,8,5,7,3)
找最大值,返回下标(which()找的都是下标):
which.max(a)
使用下标找回最大值:
a[which.max(a)]
找最小值:
which.min(a)
找数值相等:
which(a==2)
找数值>5:
which(a>5)

rev()函数,sort()函数:
颠倒向量:
a=1:20
rev(a)
排序向量(从小到大):
a=c(2,3,4,2,5,1,6,3,2,5,8,5,7,3)
sort(a)
排序向量(从大到小):
rev(sort(a))

生产矩阵:
将向量变成矩阵(三行四列):
a1=c(1:12)
matrix(a1,nrow=3,ncol=4)
将向量变成矩阵(四行三列):
matrix(a1,nrow=4,ncol=3)
将向量变成矩阵(四行三列,按照行来组成):
matrix(a1,nrow=4,ncol=3,byrow=T)

矩阵运算:
矩阵转置(行列互换,由三行四列转置为四行三列):
a=matrix(1:12,nrow=3,ncol=4)
t(a)
矩阵相加:
a=b=matrix(1:12,nrow=3,ncol=4)
a+b
矩阵相减:
a-b
矩阵相乘(对应元素意义相乘):
a*b
矩阵相乘(真):
a=matrix(1:12,nrow=3,ncol=4)
b=matrix(1:12,nrow=4,ncol=3)
a%*%b
取对角线成数组:
a=matrix(1:16,nrow=4,ncol=4)
diag(a)
对角线矩阵:
diag(diag(a))
产生四阶单位矩阵:
diag(4)
按照正态分布产生16个随机数并组成4*4矩阵:
a=matrix(rnorm(16),4,4)
矩阵求逆:
solve(a)

矩阵特征值与特征向量:
a=diag(4)+1
a.e=eign(a,symmetric=T)
a.e$vectors%*%diag(a.e$vectors)%*%t(a.e$vectors)

产生数组:
向量变数组:
x=c(1:6)
dim(x)<-c(2,3)

数据框:
矩阵形式,但是列可以是不同数据类型。
每列是一个变量,每行是一个观测值。
x1=c(10,20,30)
x2=c(20,30,15)
x=data.frame('重量'=x1,'密度'=x2)

画散点图:
plot(x)

读取文件:
查看工作目录:
getwd()
 设置工作目录(也可使用菜单栏): 
    
setwd('目录')
读取文件:
x=read.table("xxx.txt")
read.table( ) 变形有: read.csv( ),read.csv2( ), read.delim( ), read.delim2( ).前两读取逗号分割数据,后两个读取其他分割符数据。
通过复制黏贴数据,并读取列头:
x=read.table("clipboard",header=T)

for语句:
for (i in 1:59)  {a[i]=i*2+3}

while语句:
a[1]=5
i=1
while (a[i]<121) {i=i+1; a[i]=a[i-1]+2}

R脚本:
执行脚本:
source("目录")
打印内容:
print(x)

附综合性例子:

模拟学生学号,100位学生:
num=seq(10378001,10378100)
模拟成绩x1(round减去精度,runif均匀分布的随机数):
x1=round(runif(100,min=80,max=100))
模拟成绩x2(rnorm正态分布的随机数,平均80,标准差7)
x2=round(rnorm(100,mean=80,sd=7))
整合学号和成绩:
x=data.frame(num,x1,x2)
存储成绩(不定义行列名字,空格作为分割符号):
write.table(x,file="目录",col.names=F,row.names=F,sep=" ")
计算平均分:
mean(x)
计算平均分(对列求平均值):
colMeans(x)
计算平均分(对列求平均值,并且不求学号平均值):
colMeans(x)[c("x1","x2")]
计算平均分(使用apply,1代表行,2代表列):
apply(x,2,mean)
求最高分和最低分:
apply(x,2,max)
apply(x,2,min)
求个人总分:
apply(x[c("x1","x2")],1,sum)


你可能感兴趣的:(R,数据挖掘)