假設我有(r1,... rm)行和(c1,c2,... cn)矩陣,所有元素都是0和1。針對不同列的組合計算0和1的數字
我想數0和1的總數爲不同的組合:例如,C1 & C2,C1 & C3,C1 & C3,C1 & C2 & C3,C1 & C3 C4 &。
有沒有一種有效的方法來計算這些?
我這樣做很差,其中數據是我的矩陣。
is.one <- function(data,zero.one)
{
#zero.one is logical , T, counting 1, otherwise 0s.
if (zero.one)
return (data==1)
else
return (data==0)
}
sum.one <- function(data, comb, zero.one)
{
#comb is one of the combinations as a vector
index<- rep(T,nrow(data))
for (i in 1: length(comb))
{
# assuming i-th column is the i-th element of combination
index <- is.one(data[,i], zero.one[i])
data <- data[index,]
}
return(sum(index))
}
例子:
sum.one (data, c("c1","c2"), c(1,1))
sum.one (data, c("c1","c2","c3"), c(1,1,1))
sum.one (data, c("c1","c2","c3"), c(1,1,0))
我寧願不計算C1或C2他們出現在每個組合,並保持指數可能是內存問題當m(nrow(數據))是大。
任何意見,將不勝感激。
任何理由進口'reshape2'? – Bernhard
雖然有效,但我認爲我的功能也可以正常工作,但不能提高內存效率。如果我想知道c1&!c4&c5,那麼我需要從頭開始計算它,但是您知道哪些行是上面的c1&!c4。 –
對不起,reshape2 - 導入沒有必要。我已經刪除它,謝謝指出它。 – brettljausn