R_Language 板


LINE

几种我知道的 subsetting的方法比较: ``` tmp <- list() for(i in 1:100) tmp[[i]] <- iris iris <- do.call(rbind, tmp) iris1 <- iris library(data.table) iris2 <- data.table(iris) setkey(iris2, "Sepal.Width") library(dplyr) library(microbenchmark) microbenchmark( iris[iris$Sepal.Width == 3.5,], subset(iris, Sepal.Width == 3.5), iris2[J(3.5)], filter(iris, Sepal.Width == 3.5), filter(iris2, Sepal.Width == 3.5) ) ``` 我自己应该会选用 `filter(iris, Sepal.Width == 3.5)` 这种, 在我电脑上的测试结果比其他的方法快3倍 ※ 引述《tokyo291 (工口工口)》之铭言: : [问题类型]: : : 效能谘询(我想让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), 来自: 118.166.162.249
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/R_Language/M.1396540286.A.8FC.html ※ 编辑: Wush978 (118.166.162.249), 04/03/2014 23:51:36
1F:→ Wush978:说明一下, filter这方法来自dplyr套件(今年年初发布的) 04/03 23:55
2F:→ Wush978:然後它没有使用data.table, 只有使用data.frame 04/03 23:56
3F:推 tokyo291:不好意思,就是我刚刚使用data.table用filter筛选结果和 04/04 00:04
4F:→ tokyo291:data.frame相同,这样应该是可以适用在data.table格式吗? 04/04 00:04
5F:→ Wush978:可以 04/04 00:21
不好意思,上面推文的说明有点不清楚,在此澄清 上面测出来跑最快的filter是针对iris( data.frame ) 而dplyr套件本身都支援data.table。 ※ 编辑: Wush978 (118.166.162.249), 04/04/2014 00:22:47
6F:推 tokyo291:好的太感谢了! 04/04 01:22







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP