マトリックスに条件を適用integer
matrix
:は、効率的に私が
set.seed(1)
counts.mat <- matrix(sample(50,29*10,replace=T),nrow=10,ncol=29)
colnames(counts.mat) <- c("ww.1m_1","ww.1m_2","wm.1m_1","wm.1m_2","wm.1m_3","wn.1m_1","wn.1m_2",
"A_1","A_2","B_1","B_2","C_1","C_2",
"ww.2m_1","ww.2m_2","ww.2m_3","wm.2m_1","wm.2m_2","wn.2m_1","wn.2m_2",
"ww.3m_1","ww.3m_2","ww.3m_3","wm.3m_1","wm.3m_2","wm.3m_3","wn.3m_1","wn.3m_2","wn.3m_3")
その要素がこのlist
data.frame
のに記載されている(本実施例3に)実験の組から取られた特定の測定値の数を表しますさん:
df.list <- list(df1 = data.frame(gt1=c("ww.1m","wm.1m","wn.1m"),kt1=c("A","B","C"),stringsAsFactors=F),
df2 = data.frame(gt2=c("ww.2m","wm.2m","wn.2m"),stringsAsFactors=F),
df3 = data.frame(gt2=c("ww.3m","wm.3m","wn.3m"),stringsAsFactors=F))
その対応する実験の要素であるすべてのdata.frame
df.list
内の列と、その列の値は、事実上ですrレベル。 colnames
のcounts.mat
は、これらの因子レベルの複製であり、その名前は次の形式に従います。
<factor.level>_<replicate>
。
これはdf.list
に対応しています。
counts.mat
で
"ww.1m" "wm.1m" "wn.1m"
である:考える
"ww.1m_1","ww.1m_2","wm.1m_1","wm.1m_2","wm.1m_3","wn.1m_1","wn.1m_2"
:
、例えば
、gt1
はレベルの係数であります10
min.counts <- 10
少なくともmin.replicates
以上counts.mat
の各行について少なくともmin.counts
以上を持っている場合、私は何をしたいdf.list
リターンTRUE
またはFALSE
に各data.frame
に、各因子(列)のためです。
結果は、列のその数はdf.list
の因子レベルの合計数に等しく、行の数がcounts.mat
の行の数に等しいmatrix
なければなりません。
res.mat <- do.call(rbind,lapply(1:nrow(counts.mat),function(i){
return(do.call(cbind,lapply(1:length(df.list),function(l){
return(do.call(cbind,lapply(1:ncol(df.list[[l]]),function(j){
return(do.call(cbind,lapply(1:nrow(df.list[[l]]),function(k){
return(length(which(counts.mat[i,which(grepl(paste0(df.list[[l]][k,j],"_\\d+$"),colnames(counts.mat),perl=T))] >= min.counts)) >= min.replicates)
})))
})))
})))
}))
だから私はかなり速い何かを探しています:ここで
は私が遅いの実装と思われるものです。
与えます - 最後から二番目のライン上のものではなく、' 2m'でなければなりませんが「3m」よりも? –
申し訳ありません - 固定 – dan