【发布时间】:2021-07-14 02:09:42
【问题描述】:
我有一个包含 4 列(发送者、接收者、年份和值)的 data.frame。我想创建一个列表,其中每年都有一个包含值的发送者和接收者的邻接矩阵。
MVE 是
df = data.frame(sender = c("a","a","b","c","d","d","d","b","e","e"),
receiver = c("b","d","a","a","b","a","c","e","c","a"),
value = 1:10,
year= c(2000,2000,2001,2002,2002,2002,2003,2003,2003,2004))
我还有一个需要与之匹配的国家/地区列表
country_list = data.frame(country = c("a","b","c","d","e")
我尝试过的看起来像这样。我的问题是后面的邻接矩阵中没有显示正确的值。
transfer_list <- list()
for (t in 2000:2004){
matrix<-matrix(0,5,5)
rownames(matrix)<-country_list[1:5,1]
colnames(matrix)<-country_list[1:5,1]
year=which(df[,4]==t)
dyad=df[year,c(1,2)]
for (i in 1:dim(dyad)[1]){
partner1<-which(country_list[,1]==dyad[i,1])
partner2<-which(country_list[,1]==dyad[i,2])
matrix[partner1, partner2]<-df[i,3]
}
transfer_list[[t-1999]]=matrix
}
2004 年的结果应该是从 e 转移到 a 的 10,但是:
> transfer_list[[5]]
a b c d e
a 0 0 0 0 0
b 0 0 0 0 0
c 0 0 0 0 0
d 0 0 0 0 0
e 1 0 0 0 0
我的错误是什么?
【问题讨论】: