【发布时间】:2014-03-25 13:21:43
【问题描述】:
一个月前我问过一个类似的问题。请参阅 Count the occurrences of unequal numbers from a data frame
我使用outer 和Vectorize 函数解决了这个问题。我的解决方案如下:
dist_mat<- outer(1:nrow(df),1:nrow(df),
FUN = Vectorize( function(i,j) sum(df[i,]!=df[j,])))
这很完美,但现在我有一个巨大的矩阵,超出了我的内存大小。
在我得到dist_mat 之后,对于每一行,我计算小于或等于两个的列数,而我现在不能这样做。所以,我想知道是否可以结合外部函数中的计数操作来避免内存问题。我的结果只是一个向量。
提前谢谢你!
【问题讨论】:
-
罗兰在其他问题的回答是否也有记忆问题? [在进一步思考后编辑我的评论:它可能确实如此,因为它只是将操作减少了不到一半,但又增加了两列。]这将是解决内存问题的一种方法;如果是这样,矢量化操作可能会以某种方式获得所需的计数。