R语言练习题教学提纲.docx
《R语言练习题教学提纲.docx》由会员分享,可在线阅读,更多相关《R语言练习题教学提纲.docx(11页珍藏版)》请在冰豆网上搜索。
![R语言练习题教学提纲.docx](https://file1.bdocx.com/fileroot1/2023-2/2/393e6ecf-f0ac-4f34-864a-bd143803840a/393e6ecf-f0ac-4f34-864a-bd143803840a1.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
rep(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矩阵
矩阵
;求出AxB及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*B
3由1,2,...,16构成两个方阵,其中矩阵A按列输入,矩阵B按行输入,并计算C=A+B,D=AB
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)))