天天看點

R語言學習-基礎篇1

###第一周: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變為數組

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}##滿足這個條件便開始循壞

###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)

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)

繼續閱讀