R{ff}:Как добавить новый столбец, который зависит от других элементов в той же строке в объекте ffdf?

У меня есть объект ffdf (23Mx4) и вектор символов со значениями «ОПУХОЛЬ» или «НОРМАЛЬНЫЙ», и каждое значение имеет имя, уникальный icgc_specimen_id, поэтому таким образом я указываю, является ли определенный образец нормальной клеткой или опухолевой клеткой.

> head(expresion,4)
ffdf (all open) dim=c(23939146,4), dimorder=c(1,2) row.names=NULL
ffdf virtual mapping
                               PhysicalName VirtualVmode PhysicalVmode  AsIs VirtualIsMatrix PhysicalIsMatrix PhysicalElementNo
icgc_donor_id                 icgc_donor_id      integer       integer FALSE           FALSE            FALSE                 1
icgc_specimen_id           icgc_specimen_id      integer       integer FALSE           FALSE            FALSE                 2
gene_id                             gene_id      integer       integer FALSE           FALSE            FALSE                 3
normalized_read_count normalized_read_count       double        double FALSE           FALSE            FALSE                 4
                      PhysicalFirstCol PhysicalLastCol PhysicalIsOpen
icgc_donor_id                        1               1           TRUE
icgc_specimen_id                     1               1           TRUE
gene_id                              1               1           TRUE
normalized_read_count                1               1           TRUE
ffdf data
         icgc_donor_id icgc_specimen_id      gene_id normalized_read_count
1         DO3868           SP8217       SERINC1               9.276133e-05
2         DO3868           SP8217       SERINC2               1.925742e-04
3         DO3868           SP8217       SERINC3               2.531452e-05
4         DO3868           SP8217       SERINC4               4.811070e-07
5         DO3868           SP8217       SERINC5               4.402422e-07
6         DO3868           SP8217       SERP1                 7.620133e-05
7         DO3868           SP8217       SNX13                 1.088022e-05
8         DO3868           SP8217       SNX10                 5.652351e-06
:                    :                :            :                     :
23939139  DO2341           SP5052       FCRLB                 8.290500e-07
23939140  DO2341           SP5052       FDFT1                 7.108729e-05
23939141  DO2341           SP5052       FDPSL2A               7.999602e-08
23939142  DO2341           SP5052       GRIPAP1               6.532955e-05
23939143  DO2341           SP5052       GRINL1A               1.156511e-05
23939144  DO2341           SP5052       GRIP1                 2.465546e-06
23939145  DO2341           SP5052       GRIP2                 1.486814e-06
23939146  DO2341           SP5052       GRK1                  1.678295e-08
> head(specimen_type)
SP3358  SP6685 SP12716  SP8109 SP12780  SP8097 
"TUMOR" "TUMOR" "TUMOR" "TUMOR" "TUMOR" "TUMOR" 

Я хочу добавить в ffdf столбец с именем sp_type, чтобы знать в каждой строке, работаю ли я над опухолевой или нормальной ячейкой.

В обычном фрейме данных я бы сделал:

expresion$sp_type <- specimen_type[expresion$icgc_specimen_id]

Я не могу найти способ сделать то же самое в объекте ffdf.


person mfalco    schedule 09.04.2015    source источник


Ответы (1)


Я бы написал что-то вроде этого:

require(ETLUtils)
require(ffbase)
expresion$sp_type <- with(expresion[c('icgc_specimen_id')], 
 recoder(as.character(icgc_specimen_id), from = names(specimen_type), to = specimen_type))
person Community    schedule 09.04.2015