从在另一个数据集上完成的操作创建矩阵

时间:2014-12-04 07:35:01

标签: r matrix

我有一个大数据集,X有58140列,填充了1或0

我想根据数据集中58139列的信息创建一个58139 x 58139矩阵。

对于矩阵中的每个Aij,我想找到一些公共行的数量,这些行包含来自X的列i+1和列J+1的值1。

我想我可以通过sum(X[[2]]+X[[3]] == 2)为矩阵的A12元素执行此操作。

剩下的唯一问题是在矩阵中编码矩阵的方法。

1 个答案:

答案 0 :(得分:0)

您可以使用mapply。返回一个数字向量。然后你可以将它包装在对matrix的调用中并忽略第一行和第一列。

# sample data
set.seed(123)
X <- data.frame(matrix(rbinom(200, 1, .5), nrow=10))
#
A <- matrix(mapply(function(i, j) sum(rowSums(X[, c(i,j)])==2), 
                   i=rep(1:ncol(X), ncol(X)), 
                   j=rep(1:ncol(X), each=ncol(X))), 
            ncol=ncol(X))[-1, -1]
A