我试图找到一个更快的方式来总结个人在会话中的发生,以便计算他们的关系水平。基本上,我想为每两个人计算至少有一次观察到的次数。我已经在这里查看了答案,包括融合和慷慨,但没有找到使用它们的好方法。这是我的低效代码:R创建矩阵的发生
presence=array(0,c(8,10)) # session by individual
counter=array(0,c(10,10))
# put some data into the array:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 1 0 0 0 0 0 0 0 0
[2,] 0 0 1 1 1 1 0 0 0 0
[3,] 0 0 0 0 0 0 1 0 0 0
[4,] 0 0 0 0 0 0 0 1 0 0
[5,] 0 0 0 0 0 0 0 1 0 0
[6,] 0 0 0 0 0 0 0 0 1 0
[7,] 0 0 0 0 0 0 0 0 1 0
[8,] 0 0 1 0 1 1 0 0 0 1
for (a in 1:10){
for (b in 1:10){
for (c in 1:8) {
if ((presence[c,a]>0)|(presence[c,b]>0)) counter[a,b]=counter[a,b]+1
# calculate something using this counter for each two individuals a and b
}
}
}
谢谢你的帮助。 Amiyaal
我认为你需要解释你问题多一点,我不知道这里发生了什么。你的原始数据是什么样的?这代码在哪里代表?如果你想从原始数据中计算事件中的同时发生的人,那么这当然是可能的,我会建议看看一些igraph社交网络分析库。 – slammaster 2013-03-04 20:54:23
你的问题如上所述没有任何意义。您使用该声明,“在多年的会话中对个人的会话进行总结”而不定义任何条款,并且您提供的代码是垃圾。 – N8TRO 2013-03-04 20:59:21
在场数组存储哪些人在第i年的会话c中出现。内循环计算一年中至少有一人(a或b)出现的次数(即总计所有会话)。我希望现在更清楚。 – user2133354 2013-03-04 21:01:27