[英]R{ff}:How to add a new column which depends on other elements in the same row in ffdf object?
我有一个ffdf对象(23Mx4)和一个带有值“ TUMOR”或“ NORMAL”的字符向量,每个值都有一个名称,一个唯一的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对象中执行相同操作的方法。
我会这样写:
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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.