[問題] data.table取出符合條件的資料

看板R_Language作者 (工口工口)時間10年前 (2014/04/03 23:28), 10年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/4 (看更多)
[問題類型]: 效能諮詢(我想讓R 跑更快) 想在data.table格式中,取出一些特別的資料 由於迴圈數很大,想縮短取出的時間 [軟體熟悉度]: 使用者(已經有用R 做過不少作品) [問題敘述]: 在data.table格式的資料中,需要取出某行裡數字相同的整列 目前有試過一些寫法,不過時間都花蠻久的 有研究過data.table[] 中括號裡面的寫法,好像沒有辦法快速取出 (在看package裡面還有一個setkey指令,不曉得對快速取出有沒有幫助) [程式範例]: 以下是我把我的問題簡化的例子 x<-structure(list(A = c(5, 3.5, 3.25, 4.25, 1.5), B = c(4.25, 4, 4, 4.5, 4.5), C = c(4.5, 2.5, 4, 2.25, 3)), .Names = c("A", "B", "C"), class = "data.frame", row.names = c(NA, -5L)) x1<-as.data.table(x) > x1 A B C 1: 5.00 4.25 4.50 2: 3.50 4.00 2.50 3: 3.25 4.00 4.00 4: 4.25 4.50 2.25 5: 1.50 4.50 3.00 第一種我使用 > subset(x1,B==4) A B C 1: 3.50 4 2.5 2: 3.25 4 4.0 第二種是 > x1[c(x1[,2,with=F]==4)] A B C 1: 3.50 4 2.5 2: 3.25 4 4.0 這兩種都能達到我要的結果,但是時間卻花很久 我完整的code是 for(i in 1:nrow(a)){ b_1=unique(subset(x,V2==a[i])[,4:5,with=F]) b_2=unique(x[c(x[,2,with=F]==a[i])][,4:5,with=F]) b_3=unique(x[a[i]][,4:5,with=F]) } nrow(a)大約都是幾萬的數字 x是要取出的資料 a[i]則是在每個迴圈在第二行要取出符合的條件 b_1和b_2是我自己寫的結果對了但是時間要花很久 b_3是之前試網路上的寫法速度很快但是結果卻是錯誤的 不曉得依照b_3這種類似的寫法 能不能寫出取出符合條件的列? [關鍵字]: data.table 快速 取出 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.152.111 ※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1396538938.A.AED.html ※ 編輯: tokyo291 (140.116.152.111), 04/03/2014 23:48:46
文章代碼(AID): #1JFNuwhj (R_Language)
文章代碼(AID): #1JFNuwhj (R_Language)