Rff:如何在 ffdf 对象中添加一个依赖于同一行中其他元素的新列?
Posted
技术标签:
【中文标题】Rff:如何在 ffdf 对象中添加一个依赖于同一行中其他元素的新列?【英文标题】:Rff:How to add a new column which depends on other elements in the same row in ffdf object?Rff:如何在 ffdf 对象中添加一个依赖于同一行中其他元素的新列? 【发布时间】:2015-04-09 12:14:00 【问题描述】:我有一个 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 对象中执行相同操作的方法。
【问题讨论】:
【参考方案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))
【讨论】:
以上是关于Rff:如何在 ffdf 对象中添加一个依赖于同一行中其他元素的新列?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ffdf 中使用 apply 或 sapply 或 lapply?
如何将一个Access DataTable中的数据添加到同一数据库中的另一个Datatable中插入的数据依赖于文本框控件?