Re: [问题] 数列问题

楼主: bboybighead2 (脚毛会唱歌)   2019-01-24 17:35:54
※ 引述《swilly0906 (史威利哥哥)》之铭言:
: [问题类型]:
: [软件熟悉度]:
: 新手
: [问题叙述]:
: 其实我觉得这应该很简单的问题
: 但我觉得我的方法感觉好复杂= =
: 我的data有4万笔(dim = 40,000*200)
: 因为有特殊需求
: 接下来我会用trainset<-data[num1,]继续做一些分析(后面没问题)
: 问题程式码在下面
: 我的问题就是:有没有更精简的写法写出num1
: 或者我应该问:除了loop以外,有没有其他写法??
: [程式范例]:
: num <- c()
: num1 <- c()
: for(i in 0:3999){
: num <- rep((1:8)+i*10)
: num1 <- c(num1,num)
: }
: num1
: [关键字]:
: #数列
:
: 选择性,也许未来有用
:
我想到的方法是先用矩阵格式处理完,再转回向量。
如果我没理解错,
你循环的目标就是要把1:4000的数字,尾数9跟0去掉。
所以我先这样做
mat <- matrix(c(1:40000),c(4000,10),byrow = T)[,c(1:8)]
#这行的作法是生成dim为4000、10的矩阵,然后数字从1:40000
#然后把最后两列拿掉(相当于把所有尾数为9与0的数字拿掉)
vec <- as.vector(t(mat))
#最后再把处理完的矩阵转置之后返回成向量(类型为integer,可自行转为numeric)
这样可以一次处理完所有数字,不必浪费额外的计算资源。
如果有人还有其他方法请赐教XD
楼主: bboybighead2 (脚毛会唱歌)   2019-01-24 17:50:00
突然看到原文下方s大留的方法,测试一下执行时间循环速度如果改为40万个数会慢很多,s大跟我的方法时间几乎没影响。不过s大的写法更精简!
作者: swilly0906 (史威利哥哥)   2019-01-25 23:33:00
酷唷 谢谢XDDD

Links booklink

Contact Us: admin [ a t ] ucptt.com