复制到本帖中一些简单的函数
感谢帖子:https://bbs.pinggu.org/thread-3136233-1-1.html
#本脚本中所有程序来自:《复杂数据统计方法》一书的附录
#####################################################
#实践1(最初几步)
x=1:100
(x=1:100)
sample(x,20)
set.seed(0);sample(1:10,3)
z=sample(1:200000,100000)
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)
#实践2(一些简单运算)
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)
#实践3(关于R对象的类型等)
x=pi*10^2
class(x)
typeof(x)
class(cars)
typeof(cars)
names(cars)
summary(cars)
head(cars)
tail(cars)
str(cars)
row.names(cars)
attributes(cars)
class(dist~speed)
plot(dist~speed,cars)
plot(cars$speed,cars$dist)
#实践4(包括简单自变量为定量变量及定性变量的回归)
ncol(cars)
nrow(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(cars$qspeed)
plot(dist~qspeed,data=cars)
(a=lm(dist~qspeed,data=cars))
summary(a)
#实践5(简单样本描述统计量)
x <- 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)
cummax(x)
cummin(x)
cumprod(x)
cor(x,sin(x/20))
#实践6(简单图形)
x=rnorm(200)
hist(x,col="light blue")
rug(x)
stem(x)
x <- rnorm(500)
y <- x+rnorm(500)
plot(y~x)
a=lm(y~x)
abline(a,col="red")
print("Hello World!")
paste("x的最小值=",min(x))
demo(graphics)
#实践7(复数运算和求函数极值)
(2+4i)^-3.5+(2i+4.5)*(-1.7-2.3i)/((2.6-7i)*(-4+5.1i))
(z <- complex(real=rnorm(10),imaginary=rnorm(10)))
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))
#实践8(字符型向量)
a=factor(letters[1:10])
a[3]="w"
a=as.character(a)
a[3]="w"
a
factor(a)
#实践9(数据输入输出)
x=scan()
1.5 2.6 3.7 2.1 8.9 12 -1.2 -4
x=c(1.5, 2.6, 3.7, 2.1, 8.9, 12, -1.2, -4)
w=read.table(file.choose(),header=T)
setwd("d:/program files/Rstudio")
(x=rnorm(20))
write(x,"d:/test.txt")
y=scan("d:/test.txt")
y
y=iris
y[1:5
str(y)
write.table(y,"test.txt",row.names=FALSE)
w=read.table("d:/test.txt",header=T)
str(w)
write.csv(y,"test.csv")
v=read.csv("d:/program files/Rstudio/test.csv")
str(v)
data=read.table("clipboard")
data
#实践10(序列)
(z=seq(-1,10,length=100))
z=seq(-1,10,len=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))
x
w=c(1,3,x,z)
w[3
x=rep(0,10)
z=1:3
x+z
x*z
rev(z)
z=c("no cat","has ","nine","tails")
z[1]=="no cat"
z=1:5
z[7]=8
z
z=NULL
z
z[c(1,3,5)]=1:3
z
rnorm(10)[c(2,5
z[-c(1,3
z=sample(1:100,10)
z
which(z==max(z))
which.max(z)
#实践11(矩阵)
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)
z1%*%z
round(z1%*%z,14)
b=solve(z,1:4)
b
#实践12(矩阵继续)
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]<=0)
x[,-c(1,3
diag(x)
diag(1:5)
diag(5)
x[-2,-c(1,3
x[x[,1]>0&x[,3]<=1,1
x[x[,2]>0|x[,1]<1.51,1
x[!x[,2]<1.51,1
apply(x,1,mean)
apply(x,2,sum)
x=matrix(rnorm(24),4,6)
x[lower.tri(x)]=0
x
x[upper.tri(x)]=0
x
#实践13(高维数组)
x=array(runif(24),c(4,3,2))
x
is.matrix(x)
dim(x)
is.matrix(x[1,,])
x=array(1:24,c(4,3,2))
x[c(1,3
x=array(1:24,c(4,3,2))
apply(x,1,mean)
apply(x,1:2,sum)
apply(x,c(1,3),prod)
#实践14(矩阵与向量之间的运算)
x=matrix(1:20,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=FALSE))
(x3=scale(x,center=FALSE))
round(apply(x1,2,mean))
apply(x1,2,sd)
round(apply(x2,2,mean),14)
apply(x2,2,sd)
round(apply(x3,2,mean),14)
apply(x3,2,sd)
#实践15(缺失值,数据的合并)
airquality
complete.cases(airquality)
which(complete.cases(airquality)==FALSE)
sum(complete.cases(airquality))
na.omit(airquality)
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),runif(5),1:5,7:11))
x[!duplicated(x
unique(x)
#实践16(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
#实践17(条形图和表)
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)
#实践18(形成表格)
library(MASS)
quine
attach(quine)
table(Age)
table(Sex,Age)
tab=xtabs(~Sex+Age,quine)
tab
unclass(tab)
tapply(Days,Age,mean)
tapply(Days,list(Sex,Age),mean)
detach(quine)
#实践19(如何写函数)
ss=function(n=100){
z=2;
for(i in 2:n) if(any(i%%2undefinedi-1)==0)==FALSE) z=c(z,i);
return(z)
}
fix(ss)
ss()
t1=Sys.time()
ss(10000)
Sys.time()-t1
system.time(ss(10000))
#实践20(画图)
x=seq(-3,3,len=20)
x
y=dnorm(x)
y
w=data.frame(x,y)
w
par(mfcol=c(2,2))
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))
#实践21(色彩和符号等调节)
plot(1,1,xlim=c(1,7.5),ylim=c(0,5),type="n")
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)
text((1:7)+0.25,rep(2,7),paste((0:6)+7))
points(1:7,rep(1,7),pch=(0:6)+14)
text((1:7)+0.25,rep(1,7),paste((0:6)+14))