R语言练习题.doc
如有侵权,请联系网站删除,仅供学习与交流R语言练习题【精品文档】第 7 页统计软件实验1每题需注意1命令代码2结果或图形3自己的错误1 y = y <- sin(10*pi)*exp(-0.3+42)+log(23)/log(4)2 x = sin(223/3), y = x2,z = y*10 ;求x+2y-5zx <- sin(223/3);y <- x2;x+2*y-5*z3 建立起始值=3,增量值=5.5,终止值=44的一维数组x x <- seq(3.47,by=5.5)4 建立等差一维数组x:首项为0,末项为,项数为15 x <- seq(0,pi,length=15)5 将100,200,200,200,400,600,600,600,800 输入R中,保存到numeric变量中numeric <- c(100,200,200,200,400,600,600,600,800)6 将numeric转换为factor存入变量factor.numeric,并用class()确认。factor.numeric <- as.factor(numeric)7 查看factor.numeric的内容factor.numeric8 创建一个2到50的向量,形式为 2, 4, 6, 8, ., 48, 50并名为为vector1vector1 <- seq(from=2,to=50,by=2)9 选取vector1中的第20个元素 vector12010 选取vector1中的第10,15,20个元素 vector1c(10,15,20)11 选取vector1中的第10到20个元素vector10:2012 选取vector1中值大于40的元素vector1vector1>4013创建向量1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5rep(1:5,5)14使用rep()创建向量0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4rep(0:4,rep(5,5)15 用函数rep()构造一个向量x,它由3个3,4个2,5个1构成x=c(rep(3,3),rep(2,4),rep(1,5)统计软件实验2每题需注意1命令代码2结果或图形3自己的错误1计算行列式的值 A=det(matrix(c(3,4,7,2,2,8,3,6,1),nrow=3)2 矩阵,矩阵;求出A x B及A与B中对应元素之间的乘积A=matrix(c(3,4,7,2,2,8,3,6,1),nrow=3);B=matrix(rep(1:3,3),nrow=3);A%*%B;A*B3由1,2,.,16构成两个方阵,其中矩阵按列输入,矩阵按行输入,并计算C=A+B,D=ABA=matrix(1:16,nrow=4);B=matrix(1:16,nrow=4,byrow=T);C=A+B;D=A%*%B4先复制附录数据至文本文档,然后读取数据至文件datadata <- read.table("D:/t.data.txt",header = T)5 比值的计算weight和height的平方的比值存入bmi变量 bmi <- weight/height2;detach(data)6 创建对象x, 其值为1:10, 使用write函数将其写入文件x.txt;删除x, 然后再读入该文件并赋值给x,并保证 x是 numericx <- 1:10write.table(x,file = "x.txt");rm(x);xx <- read.table("x.txt",header=T);xclass(x);x <- as.numeric(x$x);x7 查看mtcars数据(mtcars回车);把vs变量所在列的元素全都改成你的“学号后两位”(mtcars$vs<-7);把mtcars存为mtcars.csv文件;读入mtcars.csv文件存入mtcarsnew;MtcarsMtcars$vs<-学号后两位mtcarsnew<-read.csv()8 把mtcars转换成矩阵mm并判断数据类型;把第六行改成你的“学号后两位”;取矩阵mm前11行存入变量mtcars11;取mtcars11的主对角线的元素,构成主对角阵mt;取mtcars11的上三角阵存入mtupper;(需要通过网络搜索学习上三角矩阵定义)mm<-as.matrix(mtcars);class(mm)mm6,<-学号后两位mtcars11(mtcars11<-head(mtcars,11)mt(mt<-diag(diag(mtcars11)mtupper(xlower.tri(x)<-0;mtupper<-x)xlower.tri(x)<-0lower.tri(x,diag=FALSExupper.tri(x)<-0upper.tri(x,diag=FALSE)9把mtupper的行名和列名改为NULL。rownames(mtupper)<-NULLcolnames(mtupper)<-NULLrownames(mtupper)<-NULLcolnames(mtupper)<-NULLrownames(mtupper)<-NULLcolnames(mtupper)<-NULLrownames(mtupper)<-NULLcolnames(mtupper)<-NULL10. mtupper每一行求和,存入mtsum。mtsum<-apply(mtupper,MARGIN=1,FUN=sum)附录:数据:1 身高体重数据weight height4.17 1.755.58 1.85.18 1.656.11 1.94.5 1.744.61 1.915.17 1.754.53 1.85.33 1.655.14 1.94.81 1.744.17 1.914.41 1.753.59 1.85.87 1.653.83 1.96.03 1.744.89 1.914.32 1.754.69 1.8统计软件实验31 数据的读取(数据见附录) data<-read.table("路径/t.data.txt",header=T)2 绘图 plot(height, weight) # 绘图3 更改绘图的参数的取值例如:plot(height, weight, pch=2) #更改后的绘图5.根据cityrain数据作图。令Y轴范围(0,300),xaxt="n",type="b",颜色为黑,X轴标题为“Month”,Y轴标题为“Tokyo Rainfall(mm)”,主标题“Monthly Rainfall in major cities”。用axis()函数添加X轴,使在X轴1到12的位置分别对应12个月份。rain <- read.csv("cityrain.csv")plot(rain$Tokyo,type = "b",xaxt="n",ylim=c(0,300),col="black",xlab="Month",ylab="Rainfall(mm)",main="Monthly Rainfall in major cities")axis(1,at=1:12,labels = rain$Month)4. 在0,4pi画sin(x),cos(x)(在同一个图象中); 其中sin(x)和cos(x)图象用不同的颜色和形状表示,并在函数图上适当的位置标注 “箭头+y=sin(x)”, “箭头+y=cos(x)” ,标记x轴,y轴,标题为“正弦余弦函数图象”.plot(sin,0,4*pi,main="正弦余弦函数图像",xlab="x轴",ylab="y轴",col="red",type="b",pch=18)curve(cos,0,4*pi,col="blue",type="b",pch=1,add=T)arrows(3.3,0.8,2.3,0.8)text(3.8,0.8,"sin(x)")arrows(10.8,0.8,11.8,0.8)text(10,0.8,"cos(x)")例如:附录:数据:1 身高体重数据weight height4.17 1.755.58 1.85.18 1.656.11 1.94.5 1.744.61 1.915.17 1.754.53 1.85.33 1.655.14 1.94.81 1.744.17 1.914.41 1.753.59 1.85.87 1.653.83 1.96.03 1.744.89 1.914.32 1.754.69 1.8统计软件实验41使用三种循环,输出向量1:100中所有数据。for (I in 1:100) print(I)while (i<=100) sum <- sum+ii <- i+1 print(sum)repeat if(i%2!=0)sum <- sum+i i <- i+1 if(i>100)break print(sum)2使用while循环求1+2+3+100的和。 i <- 1sum <- 0while(i<=100) sum<- sum+1 i <- i+1print(sum)3使用repeat循环求1至100之间的奇数和。 i <- 1sum <- 0while(i<=100) sum<- sum+1 i <- i+1print(sum)4使用for循环输出1至100之间的能够被3或5整除的数,并求和。 sum <- 0for(i in 1:100) if(i%3=0|i%5=0) print(i) sum <- sum+iprint(sum)5定义一个长度为100、mean=1,sd=1的正态分布随机向量,并找出该向量的最小值及其出现的位置。 rnorm(n,mean,sd),种子设为123 set.seed(123)norm <- rnorm(100,1,1)min.norm <- 100for(i in 1:100) if(normi<=min.norm) min.norm=normi min.count=icat(min.norm,min.count)6找出100次产生的长度为100、mean=1,sd=1的正态分布随机向量的最小值与出现位置的关系。(用plot(min.count,min.norm)表示,其中min.count为位置向量,min.norm为最小值向量)for(i in 1:100) norm <- rnorm(100,1,1) min.normi <- 100 for(i in 1:100) if(normi<=min.normi) min.normi=normi min.counti=iplot(min.count,min.norm)7 Calculate the first 50 powers of 2, 2*2, 2*2*2, etc.Calculate the squares of the integer numbers from 1 to 50.Which pairs are equal, i.e. which integer numbers fulfill the condition .How many pairs are there?(Use R to solve all these questions!)(思考使用循环和不使用循环两种方式解答)sum=0for(i in 1:100) if(2i=i2) sum=sum+1 print(i)cat("sum=",sum)n=c(1:50)a=2nb=n2x=a-bnx=0sum(x=0)n=c(1:50)a=2nb=n2x=a-bn!(x>0)|(x<0)sum(!(x>0)|(x<0)