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