###第一周:R基礎(chǔ) rm(list = ls()) #ctr+L
###矩陣相乘,函數(shù)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的單位矩陣 ###矩陣求逆,函數(shù)rnorm(),solve() a=matrix(rnorm(16),4,4)#產(chǎn)生4*4的隨機數(shù) 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)####?????? ###數(shù)組
x=c(1:6) x is.vector(x)#x是一個向量嗎。 is.array(x)#x不是數(shù)組 dim(x)<-c(2,3)#增加維數(shù),x變?yōu)閿?shù)組 x is.matrix(x)#x也是一個矩陣 ####數(shù)據(jù)框,與矩陣的區(qū)別,矩陣每個元素都是數(shù)字(數(shù)組也類似),矩陣形式,但每列可以是不同的類型 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)#向量組合成為數(shù)據(jù)框,可以是不同類型,數(shù)組或字符,x1與x2長度相等 (x=data.frame('重量'=x1,'運費'=x2))#替換列頭 #畫散點圖,函數(shù)plot() plot(x) #讀文本文件數(shù)據(jù),先設(shè)置工作目錄,把文本文件放于該目錄下 x=read.csv("F:\\R語言\\data.csv") #讀剪貼板(文本或Excel數(shù)據(jù)可通過剪貼板操作) y=read.table("clipboard",header = F)#header=T表示不讀列頭 #Excel文件(方法一:另存為空格分隔(就是原先的空格變?yōu)?,)的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按指定的規(guī)律賦值)} a for(i in 1:59){a[i]=i*2+3;b[i]=i*5-4} b=0 b#(與a、b的初始值無關(guān),但是要有初始值) ##while語句 a[1]=5 i=1 while(a[i]<121){i=i+1;a[i]=a[i-1]+2}##滿足這個條件便開始循壞 a ###source()函數(shù),print()函數(shù) source("F:\\R語言\\learningR.R")##運行腳本語言 print(x)#在監(jiān)控臺來顯示結(jié)果 ######綜合性例子,模擬產(chǎn)生統(tǒng)計專業(yè)同學(xué)的名單(學(xué)號區(qū)分),記錄數(shù)學(xué)分析,線性代數(shù),概率統(tǒng)計三科成績,然后進行統(tǒng)計分析 num=seq(2120170400,2120170400)#seq()函數(shù)產(chǎn)生向量,產(chǎn)生100個不同的學(xué)號 num #用runif和rnorm #產(chǎn)生100個均勻分布的隨機數(shù),上限是100,下限是80,產(chǎn)生的向量可能會有小數(shù)點,用round()函數(shù)四舍五入 x1<-round(runif(100,min=80,max=100)) x1 x2=round(rnorm(100,mean = 80,sd=7))#均值為80,標(biāo)準(zhǔn)差為7,正態(tài)分布 x2 x3=round(rnorm(100,mean = 83,sd=18))#均值為83,標(biāo)準(zhǔn)差為18 x3 x3[which(x3>100)]=100#先找到大于100的數(shù)的下標(biāo),再將此下標(biāo)對應(yīng)的值賦值為100 ##合成數(shù)據(jù)框并保存到硬盤 #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數(shù)據(jù)框?qū)懭氲轿募付ǖ牡胤?br>##計算各科的平均分mean(),collMeans(),apply() mean(x)###運行為NA colMeans(x)##對列求平均值,會對學(xué)號也求平均值 colMeans(x)[c("x1","x2","x3")]#不顯示列 apply(x,2,mean)#表示對x數(shù)據(jù)框作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) |
|