R语言学习笔记 2017-01-16 可木的专栏 免疫细胞研究bioworld 免疫细胞研究bioworld antibody-king 专题导师群,海外精英群,技术专题群,药学系列群,医学系列群等 我们的服务对象:全球导师,硕博学生,海外精英,业内生物医药企业 欢迎加入文末的R语音学习交流群,加入方式,长按下文的二维码! 实践一: x=1:100 #把1,2,。。。100个整数向量赋值到x (x=1:100) sample(x,20) set.seed(0);sample(1:10,3) z=sample(1:20000,10000) z[1:10] y=c(1,3,7,3,4,2) z[y] (z=sample(x,100,rep=T)) (z1=unique(z)) length(z1) xz=setdiff(x,z) sort(union(xz),z) setequal(union(xz,z),x) intersect(1:10,7:50) sample(1:100,20,prob=1:100) 实践二: pi*10^2 # '*'(pi, '^'(10,2)) pi*(1:10)^-2.3 x=pi*10^2 x print(x) (x=pi*10^2) pi^(1:5) print(x,digits=12) 实践三(关于R的对象类型等) x=pi*10^2 # class(x) typeof(x) class(cars) typeof(cars) names(cars) summary(cars) head(class) tail(class) str(cars) row.name(cars) attributes(cars) class(dist~speed) plot(dist~speed,cars) plot(cars$speed,cars$dist) 实践四(包括简单自变量为定变量 及定性变量的回归) ncol(cars),nrow(cars) #cars的行列数 dim(cars) lm(dist~speed, data =cars) cars$qspeed = cut(cars$speed, breaks=quantile(cars$speed),include.lowest=TRUE) names(cars) cars[3] table(cars[3]) is.factor(car$speed) plot(dist~speed,data=cars) (a=lm(dist~speed, data=cars)) summary(a) 实践五(简单样本描述统计量) x<-round(runif(20,0,20),digits=2)>-round(runif(20,0,20),digits=2)> summary(x) min(x),max(x) range(x) median(x) mean(x) var(x) sd(x) sqrt(var(x)) rank(x) order(x) order(x,decreasing=T) x[order(x)] #和sort(x) sort(x,decreasing=T) sort(x,dec=T) sum(x);length(x) round(x) 等同于round(x,0) 而round(x,5) fivenum(x), quantile(x) quantile(x,c(0,.33,.66,1)) mad(x)# 'median average distance': cummax(x) cummin(x) sumprod(x) cor(x,sin(x/20)) 实践六(简单图形) x=rnorm(200) #200个随机正态数赋值到x hist(x, col='light blue') rug(x) stem(x) x<> y<> plot(y ~x) a=lm(y~x) abline(a,col='red') print('Hello world!') paste('x的最小值= ',min(x)) demo(graphics) 实践七(复数运算和求函数极值) (2+4i)^-3.5+(2i+4.5)*(-1.7-2.3i)/((2.6-7i)*(-4+5.1i)) #复数运算 (z<> complex(re=rnorm(3),im=rnorm(3)) Re(z) Im(z) Mod(z) Arg(z) choose(3,2) factorial(6) #解方程: f=function(x) x^3-2*x-1 uniroot(f,c(0,2)) #如果知道根为极值 f=function(x) x^2+2*x+1 optimize(f,c(-2,2)) #在区间(-2,2) 实践八 (字符型向量) a=factor(letter[1:10]) #letters:小写字母的向量,LETTERS:大写字母的向量 a[3]='w' #不行,警告! a=as.character(a) #转换一下 a[3]='w' #可以了 a;character(a) #两种不同的类型 实践九 (数据输入输出) x=scan() # x=c( w=read.table(file.choose(),header=T) setwd('f:/2013stat') set('f:\2013stat') (x=rnorm(20)) write(x,'f:/2013stat/test.txt') y=scan(x,'f:/2013stat/test.txt');y y=iris;y[1:5,];str(y) write.table(y,'test.txt',row.name=F) w=read.table('f:/2013stat/test.txt',header=T) str(w) write.csv(y,'test.csv') v=read.csv('f:/2013stat/test.csv') str(v) data=read.table('clipboard') 实践十(序列) (z=seq(-1,10,length=100)) # -1到10等间隔的100个数的序列 z=seq(-1,10,length=100) (z=seq(10,-1,-0.1)) (x=rep(1:3,3)) (x=rep(3:5,1:3)) x=rep(c(1,10),c(4,5)) w=c(1,3,x,z) x=rep(0,10);z=1:3;x+z x*z rev(x) z=c('no cat ','has','nine','tails') z[1]=='no cat' z=1:5 z[7]=8;z z=NULL z[c(1,3,5)]=1:3 z rnorm(10)[(2,5)] z[-c(1,3)] z=sample(1:100,10);z which(z==max(z)) 实践十一 (矩阵) x=sample(1:100,12);x #抽样 all(x>0);all(x!=0);any(x>0);(1:10)[x>0] diff(x) diff(x,lag=2) x=matrix(1:20,4,5);x x=matrix(1:20,4,5,byrow=T);x t(x) x=matrix(sample(1:100,20),4,5) 2*x x+5 y=matrix(sample(1:100,20),5,4) x+t(y) (z=x%*%y) z1=solve(z) round(z1%*%z,14) b=solve(z,1:4);b 实践十二 (矩阵继续) nrow(x),ncol(x),dim(x) #行列数目 x=matrix(rnorm(24),4,6) x[c(2,1),] x[,c(1,3)] x[2,1] x[x[,1]>0,1] sum(x[,1]>0) sum(x[,1]<> x[,-c(1,3)] diag(x) diag(1:5) diag(5) x[-2,-c(1,3)] x[x[,1]>0&x[,3]<> x[x[,2]>0|x[,1]<> x[!x[,2]<> apply(x,1,mean) apply(x,2,sum) x=matrix(rnorm(24),4,6) x[lower.tri(x)]=0;x 实践十三 (高维数组) x=array(runif(24),c(4,3,2)) #用24个服从均匀分布的样本点构造4乘3乘2的3维数组 is.matrix(x) dim(x) is.matrix(x[1,,])#部分三维数组是矩阵 x=array(1:24,c(4,3,2)) x[c(1,3),,] apply(x,1,mean) apply(x,1:2,sum) apply(x,c(1,3),prob) 实践十四 (矩阵与向量之间的运算) x=matrix(1:20,5,4) #5乘4矩阵 sweep(x,1,1:5,'*') sweep(x,2,1:4,'+') x*1:5 (x=matrix(sample(1:100,24),6,4));(x1=scale(x)) (x2=scale(x,scale=F)) (x3=scale(x,center=F)) round(apply(x1,2,mean),14) apply(x1,2,sd) round(apply(x2,2,mean),14);apply(x2,2,sd) round(apply(x3,2,mean),14);apply(x3,2,sd) 实践十六 (缺失值、数据的合并) airquality #有缺失值(NA)的R自带数据 complete.cases(airquality) which(complete.cases(airquality)==F) sum(complete.cases(airquality)) na.omit(airquality) #附加,横或竖合并数据:append,cbind,rbind x=1:10;x[12]=3 (x1=append(x,77,after=5)) cbind(1:5,rnorm(5)) rbind(1:5,rnorm(5)) cbind(1:3,4:6);rbind(1:3,4:6) #去掉矩阵重复的行 (x=rbind(1:5,runif(5),1:5,7:11)) x[!duplicated(x),] unique(x) 实践十六(list) z=list(1:3,Tom=c(1:2,a=list('R',LETTERS[1:5]),W='hi')) z[[1]];z[[2]] z$T z$T$a2 z$T[[3]] z$T$w 实践十七 (条形图和表) x=scan() 3 3 3 4 1 4 2 1 3 2 5 3 1 2 5 2 3 4 2 2 5 3 1 4 2 2 4 3 5 2 barplot(x) table(x) barplot(table(x)) barplot(table(x)/length(x)) table(x)/length(x) 实践十八(形成表格) library(MASS) #载入软件包MASS quine attach(quine) table(Age) table(Sex,Age); tab=xtabs(~Sex+Age,quine); unclass(tab) tapply(Days,Age,mean) tapply(Days,list(Sex,Age),mean) detach(quine) 实践十九(如何写函数) ss=function(n=100){ for(i in 2:n) if(any(i%%2:(i-1)==0)==F) z=c(z,i); return(z) }#求n以内的素数 fix(ss) #用来修改任何函数或者编写一个新函数 ss() #计算100以内的素数 t1=Sys.time() #纪录系统时间点 ss(10000) #计算10000以内的素数 Sys.time()-t1 #费了多少时间 system.time(ss(10000)) #计算执行ss(10000)所用时间 #函数可以不写return,这时最后一个值为return的值 #为了输出多个值最好使用list输出 实践二十(画图) x=seq(-3,3,len=20); y=dnorm(x)#产生数据 w=data.frame(x,y) #合并x和y,生成w par(mfcol=c(2,2)) #准备画4个图的地方 plot(y~x,w,main='正态密度函数') plot(y~x,w,type='l',main='正态密度函数') plot(y~x,w,type='o',main='正态密度函数') plot(y~x,w,type='b',main='正态密度函数') par(mfcol=c(1,1))#取消par(mfcol=c(2,2)) 实践二十一(色彩和符号等调节) plot(1,1,xlim=c(1,7.5),ylim=c(0,5),type='n')#画出框架 #在plot命令后面追加点(如要追加线可用lines函数) points(1:7,rep(4.5,7),cex=seq(1,4,l=7),col=1:7,pch=0.6) text(1:7,rep(3.5,7),labels=paste(0:6,letters[1:7]),cex=seq(1,4,l=7),col=1:7) #在指定位置加文字 points(1:7,rep(2,7),pch=(0:6)+7)#点出符号7到13 text((1:7)+0.25,rep(2:7),paste((0:6)+7)) #加符号号码 points(1:7,rep(1:7),pch=(0:6)+14) #点出符号14到20 text((1:7)+0.25,rep(1:7),paste((0:6)+14))#加符号号码 这些关于符号形状,大小,颜色,以及其它画图选项的说明可用 “?par”查看 欢迎加入R语音学习交流群,加入方式: 阅读 微信扫一扫 |
|