一個月前我曾問過類似的問題。請參考 Count the occurrences of unequal numbers from a data frame如何自定義外部和Vectorize函數?
我用outer
和Vectorize
函數解決了這個問題。我的解決方案如下:
dist_mat<- outer(1:nrow(df),1:nrow(df),
FUN = Vectorize(function(i,j) sum(df[i,]!=df[j,])))
這工作完美,但現在我有一個巨大的矩陣,超過我的內存大小。
我得到dist_mat
之後,對於每一行我計算列數少於或等於2,這是我現在無法做到的。所以,我想知道是否可以將外部函數中的計數操作結合起來以避免內存問題。我的結果只會是一個向量。
預先感謝您!
羅蘭在另一個問題的答案是否也有記憶問題? [編輯我的評論進一步思考:它可能會,因爲它只減少了一半的操作,但增加了兩列。]這將是解決內存問題的一種方法;如果是這樣,矢量化操作可能會以某種方式用於獲取所需的計數。 – Aaron