我有一个由来自不同实验/条件的数据(样本)组成的大型数据集。我已经制作了一个数据框(Data_Design),我在其中为每个样本分配了experiment.nr和condition。
> Data
Samp1 Samp2 Samp3 Samp4 Samp5 Samp6
GeneA 10 4 2 3 2 3
GeneB 3 335 12 12 2 23
GeneC 5 6 2 3 243 3
GeneD 122 132 132 21 22 34
> Data_Design
Exps Conds
Samp1 Exp1 CondA
Samp2 Exp1 CondB
Samp3 Exp2 CondC
Samp4 Exp2 CondB
Samp5 Exp3 CondB
Samp6 Exp3 CondC
现在我想创建一个脚本,允许我将几个感兴趣的实验/条件作为输入(带变量),然后它将提取相应的数据。像这样:
> condition <- c("CondA","CondB")
> experiment <- c("Exp2","Exp3")
> Data.new <- Data[, Data_Design$Conds == condition & Data_Design$Exps == experiment]
结果将是:
> Data.new
Samp4 Samp5
GeneA 3 2
GeneB 12 2
GeneC 3 243
GeneD 21 22
在这种情况下,应允许所有选项,即Exp2 / CondA,Exp2 / CondB,Exp3 / CondA或Exp3 / CondB。
然而,到目前为止,我没有得到它的工作。我想通过分配&#34;条件&#34;我做错了什么。和&#34;实验&#34;,我不应该使用矢量?
有没有人有好的建议/例子?
答案 0 :(得分:0)
可能有更好的方法可以做到这一点,但就目前而言,这是有效的。注意:在Data_Design
中,我将所有Samp
放在名为Samp
的列中,而不是将它们作为rownames。
inputs <- expand.grid(experiment, condition, stringsAsFactors = FALSE)
names(inputs) <- c('Exps', 'Conds')
inputs <- merge(inputs, Data_Design, by = c('Exps', 'Conds'), all.x = TRUE)
Data[, inputs$Samp[!is.na(inputs$Samp)]]
## Samp4 Samp5
##GeneA 3 2
##GeneB 12 2
##GeneC 3 243
##GeneD 21 22