看板 R_Language 關於我們 聯絡資訊
※ 引述《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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.228.192.232 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1548322557.A.A1E.html
bboybighead2: 突然看到原文下方s大留的方法,測試一下執行時間迴 01/24 17:50
bboybighead2: 圈速度如果改為40萬個數會慢很多,s大跟我的方法時 01/24 17:51
bboybighead2: 間幾乎沒影響。不過s大的寫法更精簡! 01/24 17:51
swilly0906: 酷唷 謝謝XDDD 01/25 23:33