实验五
题目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)
结果展示:
第一次:
第二次: