提取因子

时间:2016-05-25 08:31:06

标签: r matrix data.table bigdata

我试图在R中读取一个巨大的矩阵(2.8gb),因此,到目前为止,我找到的最好的矩阵是

 require(data.table)

 DT<-fread("bigmatrix.csv")

我几乎什么都不知道!

在此之后,我能告诉你这个矩阵有3列和50百万行。

每一行都是

类型
             object1                       object 2           distance
 1: Kho.CENTRAL_KHOISAN.GWI           Kho.CENTRAL_KHOISAN.GWI 0.0000000
 2: Kho.CENTRAL_KHOISAN.GWI         Kho.CENTRAL_KHOISAN.GXANA 0.2195843  
 3: Kho.CENTRAL_KHOISAN.GWI Kho.CENTRAL_KHOISAN.KHOEKHOEGOWAB 0.6749363
 4: Kho.CENTRAL_KHOISAN.GWI          Kho.CENTRAL_KHOISAN.KHWE 0.6089206
 5: Kho.CENTRAL_KHOISAN.GWI        Kho.CENTRAL_KHOISAN.KORANA 0.7163111
 6: Kho.CENTRAL_KHOISAN.GWI         Kho.CENTRAL_KHOISAN.KWADI 0.8017179

因此,对于大约6900个物体,它成对地比较2个物体的距离

现在我的问题出现了:

我想要删除仅41个对象的成对比较。但是我不知道给我这个数据集的人怎么称这41个对象!

所以我的解决方案是找到DT $ object1的级别,将它们写入文件然后扫描它们以找到我需要的41,我该怎么办?

我试过

foo<-factor(DT$object1)

所以当我打电话时

foo

....

6895 Levels: AA.BEJA.BEJA AA.BEJA.BEJA_2 AA.BERBER.AWJILAH ... Zun.ZUNI.ZUNI

但是

foo$Levels

给我一​​个错误!

我确信有一种比我在C ++中所做的更聪明的方式(即在每一行上循环,只有当字符串向量不存在时才在字符串向量中插入对象1的名称) ,但我该怎么做?

编辑:现在出现了另一个问题:

我已经确定了我需要的41个对象,如何从data.table中提取与我相关的行?

我可以将对象的名称存储在数据框或向量

1 个答案:

答案 0 :(得分:5)

尝试: levels(as.factor(DT$object1))