最新R语言练习题.docx
《最新R语言练习题.docx》由会员分享,可在线阅读,更多相关《最新R语言练习题.docx(12页珍藏版)》请在冰点文库上搜索。
![最新R语言练习题.docx](https://file1.bingdoc.com/fileroot1/2023-5/2/84afa2e2-bcae-4492-b8f6-281a0bfd365b/84afa2e2-bcae-4492-b8f6-281a0bfd365b1.gif)
最新R语言练习题
R语言练习题
统计软件实验1
每题需注意1命令代码2结果或图形3自己的错误
1y=
y<-sin(10*pi)*exp(-0.3+4^2)+log(23)/log(4)
2x=sin(223/3),y=x^2,z=y*10;求x+2y-5z
x<-sin(223/3);y<-x^2;x+2*y-5*z
3建立起始值=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.numeric
8创立一个2到50的向量,形式为2,4,6,8,...,48,50并名为为vector1
vector1<-seq(from=2,to=50,by=2)
9选取vector1中的第20个元素
vector1[20]
10选取vector1中的第10,15,20个元素
vector1[c(10,15,20)]
11选取vector1中的第10到20个元素
vector[10:
20]
12选取vector1中值大于40的元素
vector1[vector1>40]
13创立向量1234512345123451234512345
rep(1:
5,5)
14使用rep()创立向量0000011111222223333344444
A=matrix(1:
16,nrow=4);B=matrix(1:
16,nrow=4,byrow=T);C=A+B;D=A%*%B
4先复制附录数据至文本文档,然后读取数据至文件data
data<-read.table("D:
/t.data.txt",header=T)
5比值的计算weight和height的平方的比值存入bmi变量
bmi<-weight/height^2;detach(data)
6创立对象x,其值为1:
10,使用write函数将其写入文件x.txt;删除x,然后再读入该文件并赋值给x,并保证x是numeric
x<-1:
10
write.table(x,file="x.txt");rm(x);x
x<-read.table("x.txt",header=T);x
class(x);x<-as.numeric(x$x);x
7查看mtcars数据〔mtcars回车〕;把vs变量所在列的元素全都改成你的“学号后两位〞〔mtcars$vs<-7〕;把mtcars存为mtcars.csv文件;读入mtcars.csv文件存入mtcarsnew;
Mtcars
Mtcars$vs<-学号后两位
mtcarsnew<-read.csv()
8把mtcars转换成矩阵mm并判断数据类型;把第六行改成你的“学号后两位〞;取矩阵mm前11行存入变量mtcars11;取mtcars11的主对角线的元素,构成主对角阵mt;取mtcars11的上三角阵存入mtupper;(需要通过网络搜索学习上三角矩阵定义)
mm<-as.matrix(mtcars);class(mm)
mm[6,]<-学号后两位
mtcars11(mtcars11<-head(mtcars,11))
mt(mt<-diag(diag(mtcars11)))
mtupper(x[lower.tri(x)]<-0;mtupper<-x)
x[lower.tri(x)]<-0
lower.tri(x,diag=FALSE
x[upper.tri(x)]<-0
upper.tri(x,diag=FALSE)
9把mtupper的行名和列名改为NULL。
rownames(mtupper)<-NULL
colnames(mtupper)<-NULL
rownames(mtupper)<-NULL
colnames(mtupper)<-NULL
rownames(mtupper)<-NULL
colnames(mtupper)<-NULL
rownames(mtupper)<-NULL
colnames(mtupper)<-NULL
10.mtupper每一行求和,存入mtsum。
mtsum<-apply(mtupper,MARGIN=1,FUN=sum)
附录:
数据:
1身高体重数据
weightheight
4.171.75
5.581.8
5.181.65
6.111.9
4.51.74
4.611.91
5.171.75
4.531.8
5.331.65
5.141.9
4.811.74
4.171.91
4.411.75
3.591.8
5.871.65
3.831.9
6.031.74
4.891.91
4.321.75
4.691.8
统计软件实验3
1数据的读取〔数据见附录〕
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轴标题为“TokyoRainfall(mm)〞,主标题“MonthlyRainfallinmajorcities〞。
用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="MonthlyRainfallinmajorcities")
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身高体重数据
weightheight
4.171.75
5.581.8
5.181.65
6.111.9
4.51.74
4.611.91
5.171.75
4.531.8
5.331.65
5.141.9
4.811.74
4.171.91
4.411.75
3.591.8
5.871.65
3.831.9
6.031.74
4.891.91
4.321.75
4.691.8
统计软件实验4
1使用三种循环,输出向量1:
100中所有数据。
1
for(Iin1:
100)
print(I)
2
while(i<=100){
sum<-sum+i
i<-i+1
}
print(sum)
3
repeat{
if(i%%2!
=0)sum<-sum+i
i<-i+1
if(i>100)break
}
print(sum)
2使用while循环求1+2+3+…+100的和。
i<-1
sum<-0
while(i<=100){
sum<-sum+1
i<-i+1
}
print(sum)
3使用repeat循环求1至100之间的奇数和。
i<-1
sum<-0
while(i<=100){
sum<-sum+1
i<-i+1
}
print(sum)
4使用for循环输出1至100之间的能够被3或5整除的数,并求和。
sum<-0
for(iin1:
100){
if(i%%3==0|i%%5==0){
print(i)
sum<-sum+i
}
}
print(sum)
5定义一个长度为100、mean=1,sd=1的正态分布随机向量,并找出该向量的最小值及其出现的位置。
rnorm〔n,mean,sd〕,种子设为123
set.seed(123)
norm<-rnorm(100,1,1)
min.norm<-100
for(iin1:
100){
if(norm[i]<=min.norm){
min.norm=norm[i]
min.count=i
}
}
cat(min.norm,min.count)
6找出100次产生的长度为100、mean=1,sd=1的正态分布随机向量的最小值与出现位置的关系。
(用plot(min.count,min.norm)表示,其中min.count为位置向量,min.norm为最小值向量)
for(iin1:
100){
norm<-rnorm(100,1,1)
min.norm[i]<-100
for(iin1:
100){
if(norm[i]<=min.norm[i]){
min.norm[i]=norm[i]
min.count[i]=i
}
}
}
plot(min.count,min.norm)
7
Calculatethefirst50powersof2,2*2,2*2*2,etc.
Calculatethesquaresoftheintegernumbersfrom1to50.
Whichpairsareequal,i.e.whichintegernumbersfulfillthecondition
.
Howmanypairsarethere?
(UseRtosolveallthesequestions!
)
(思考使用循环和不使用循环两种方式解答)
sum=0
for(iin1:
100)
if(2^i==i^2){
sum=sum+1
print(i)
}
cat("sum=",sum)
n=c(1:
50)
a=2^n
b=n^2
x=a-b
n[x==0]
sum(x==0)
n=c(1:
50)
a=2^n
b=n^2
x=a-b
n[!
((x>0)|(x<0))]
sum(!
((x>0)|(x<0)))