###第一周:R基础 rm(list = ls()) #ctr+L
###矩阵相乘,函数diag() 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)#对角线为1的单位矩阵 ###矩阵求逆,函数rnorm(),solve() a=matrix(rnorm(16),4,4)#产生4*4的随机数 solve(a)#矩阵求逆!!!!(逆矩阵) b=c(1:4) solve(a,b)#求方程的解 ##矩阵的特征值、特征向量eigen() a=diag(4)+1 a.e=eigen(a,symmetric = T) a.e a.e$vectors%*%diag(a.e$values)%*%t(a.e$vectors)####?????? ###数组
x=c(1:6) x is.vector(x)#x是一个向量吗。 is.array(x)#x不是数组 dim(x)<-c(2,3)#增加维数,x变为数组 x is.matrix(x)#x也是一个矩阵 ####数据框,与矩阵的区别,矩阵每个元素都是数字(数组也类似),矩阵形式,但每列可以是不同的类型 x1=c(1,2,3,4,5,6,7,8,9,10) length(x1) x2=c(1,2,3,4,5,6,10,7,8,9) length(x2) x=data.frame(x1,x2)#向量组合成为数据框,可以是不同类型,数组或字符,x1与x2长度相等 (x=data.frame('重量'=x1,'运费'=x2))#替换列头 #画散点图,函数plot() plot(x) #读文本文件数据,先设置工作目录,把文本文件放于该目录下 x=read.csv("F:\\R语言\\data.csv") #读剪贴板(文本或Excel数据可通过剪贴板操作) y=read.table("clipboard",header = F)#header=T表示不读列头 #Excel文件(方法一:另存为空格分隔(就是原先的空格变为,)的prn文本格式再读) w=read.table("F:\\R语言\\data.prn",header = T) #方法2:安装RODBC包,再通过ODBC读 install.packages("RODBC") library(RODBC)#装载包 z<-odbcConnectExcel("F:\\R语言\\student.xls") (w<-sqlFetch(z,"Sheet1")) #####循坏语句(for语句)
a=0 for(i in 1:59){a[i]=i*2+3} #格式for(循坏变量 in 遍历范围){循坏体(向量a里的第i个元素=啥,将i按指定的规律赋值)} a for(i in 1:59){a[i]=i*2+3;b[i]=i*5-4} b=0 b#(与a、b的初始值无关,但是要有初始值) ##while语句 a[1]=5 i=1 while(a[i]<121){i=i+1;a[i]=a[i-1]+2}##满足这个条件便开始循坏 a ###source()函数,print()函数 source("F:\\R语言\\learningR.R")##运行脚本语言 print(x)#在监控台来显示结果 ######综合性例子,模拟产生统计专业同学的名单(学号区分),记录数学分析,线性代数,概率统计三科成绩,然后进行统计分析 num=seq(2120170400,2120170400)#seq()函数产生向量,产生100个不同的学号 num #用runif和rnorm #产生100个均匀分布的随机数,上限是100,下限是80,产生的向量可能会有小数点,用round()函数四舍五入 x1<-round(runif(100,min=80,max=100)) x1 x2=round(rnorm(100,mean = 80,sd=7))#均值为80,标准差为7,正态分布 x2 x3=round(rnorm(100,mean = 83,sd=18))#均值为83,标准差为18 x3 x3[which(x3>100)]=100#先找到大于100的数的下标,再将此下标对应的值赋值为100 ##合成数据框并保存到硬盘 #data.frame() #write.table() x=data.frame(num,x1,x2,x3) x write.table(x,file = "F:\\R语言\\mark.txt",col.names = F,row.names = F,sep = " ")#将x数据框写入到文件指定的地方 ##计算各科的平均分mean(),collMeans(),apply() mean(x)###运行为NA colMeans(x)##对列求平均值,会对学号也求平均值 colMeans(x)[c("x1","x2","x3")]#不显示列 apply(x,2,mean)#表示对x数据框作2(列)求mean操作,--1(行操作) ###求各科最高最低分 apply(x, 2, max)#对列求最高分 apply(x,2,min)#对列求最低分 ##求每个人的总分 sum=apply(x[c("x1","x2","x3")],1,sum) x=data.frame(num,x1,x2,x3,sum) |
|
来自: python_lover > 《待分类》