[英]Subset from data frame using vector with multiple
我有一個由來自不同實驗/條件的數據(樣本)組成的大型數據集。 我制作了一個數據框(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。
但是,到目前為止,我還沒有開始工作。 我猜我通過分配“條件”和“實驗”做錯了事,我不應該使用向量嗎?
有人有好的建議/例子嗎?
也許有更好的方法可以執行此操作,但是目前為止,此方法可行。 注意:在Data_Design
,我將所有Samp
放在稱為Samp
的列中,而不是將它們作為行名。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.