R基础for、while、自定义函数(证明中心极限定理)

后面证明中心极限定理的自定义fun还没搞懂、、、
###6.R语言与统计#### ###7.循环与自定义函数#### #7.1 for循环#### example("for") for(i in 1:5) print(1:i) #循环遍历每个数,每取出一个数,就打印一个向量 for(n in c(2,5,10,20,50)) { #循环遍历向量中的没一个数 x <- stats::rnorm(n) #生成含有n个数的正态分布,n是上面循环遍历的那个数 cat(n,":", sum(x^2),"\n") #对应每一个数n,计算生成的正态分布数组的平方和 } #cat 起连接的作用,上例中:个数 :x的平方和 换行 f <- factor(sample(letters[1:5], 10, replace = TRUE));f #抽样,生成字母序列 for(i in unique(f)) print(i)#依次取出序列中的每一个独有的值 #7.2 while语句#### v <- c("Hello","while loop") cnt <- 2 while (cnt < 7) { print(v) cnt = cnt + 1 } a <- c(1:5) i<-1 while(a[i]<5){ print(a[i]) i=i+1 } #取向量的最后一个元素 b[length(b)] tail(b,1) #7.3 自定义函数#### myfun_cv<-function(x){ #函数在R中也是一个对象 cv<-sd(x)/mean(x) #函数的语句体用来计算变异系数 return(cv) #函数执行完毕后返回cv值,该值就是变异系数 } #测试该函数 a<-c(1,2,5,8,9,6) #生成一个向量 myfun_cv(a) #调用自定义的函数来计算变异系数 #7.4 通过循环和自定义函数来验证中心极限定理#### myfun<-function(a){ x<-1:100 #先生成一个1到100的序列,后面可以更改这些值,相当于覆盖掉原来的值 x<-data.frame(x) a<-data.frame(a) for(i in 1:100){ #设置循环,循环抽取100个样本,并将计算出来的均值赋值给数据框中的x变量 c<-a[sample(nrow(a),1000),] m=mean(c) x$x[i]<-m } windows(1280,720);par(mfrow=c(1,2)) plot(density(a$a),main = "这是原来的分布") plot(density(x$x),main = "这是抽取的样本的均数的分布") } ###7.4 .1正态分布#### a<-rnorm(10000,0,1) myfun(a) ###7.4.2指数分布#### b<-rexp(100000,1) myfun(b) ###7.4.3t分布#### c<-rt(1000,3) myfun(c) ###7.4.4F分布#### d<-rchisq(100000,1) myfun(d)

  

猜你喜欢

转载自www.cnblogs.com/super-yb/p/11037266.html