实验五
题目1:
解决方法:
a<-read.table("E:/R/Rcode/temp.txt")#读取txt文件,找到下载路径
b<-list();c<-list();d<-list();e<-list();h<-matrix(0,5,1)#声明变量
for (i in 1:5) {
b[[i]]<-a[i,which(nchar(a[i,])>=5)]
}
b#对于每一行,取出字符数大于等于5的元素;nchar
for (i in 1:5) {
c[[i]]<-paste(b[[i]],collapse ="")
}
c#将每一行提取的元素拼接起来(中间不分隔)变成一个字符(每一行变成一个字符);paste
for (i in 1:5) {
d[[i]]<-substr(c[[i]],3,9)
}
d#然后,对于拼接后的5个字符,取出各自第3-9个字母;substr
for (i in 1:5) {
g<-strsplit(d[[i]],"f")#根据字母“f”将字符拆分;strsplit
e[[i]]<-g[[1]][1]
h[i]<-e[[i]][1]
}
h#将拆分后的每一行的第一个元素放在一起变成向量的形式
x<-paste(h,sep = " ",collapse = "_")
x#将拆分后的第一个元素以“_”为分隔拼接起来;paste
结果:
题目二:
解决办法:
f<-function(b){
start<-Sys.time()#计算初始时间
b[which(lower.tri(b)==TRUE)]=t(b)[which(lower.tri(b)==TRUE)]
#利用lower.tri函数将b矩阵变成对称矩阵
end<-Sys.time()#计算终止时间
runningtime<-end-start#计算运行时间
list(b,runningtime)#返回矩阵和与运行时间
}
a<-sample(1:100,100)#在1—100之间随机生成100个数,不放回抽样
b<-matrix(a,10,10)#以向量a生成一个10*10的随机矩阵
f(b)#调用自定义函数f,参数是矩阵b
结果展示:
第一次:
第二次:
题目三:
解决办法:
rotate <- function(x) {
t(apply(x, 2, rev))
}#将输入的x矩阵进行逆时针旋转90°
g<-function(b){
c<-rotate(b)#旋转之后的新矩阵赋给c
start<-Sys.time()
c[which(lower.tri(c)==TRUE)]=t(c)[which(lower.tri(c)==TRUE)]
#利用lower.tri函数将c矩阵变成对称矩阵
end<-Sys.time()
runningtime<-end-start
list(rotate(c),runningtime)#返回c的旋转矩阵和与运行时间
}
a<-sample(1:100,100)
b<-matrix(a,10,10)
g(b)
结果展示:
第一次:
第二次: