[问题类型]:
效能咨询(我想让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 快速 取出