在R中创建距离矩阵的列表

st

使用R中的Cshapes包,我想创建一个矩阵列表,该矩阵每年测量两个国家是否为近邻。

install.packages("cshapes")

将代码运行一年(此处为1990年)可以正常工作:

wmat <- distmatrix(as.Date("1990-1-1"), type="mindist", tolerance=0.5, useGW=FALSE)

这给出了具有以下结构的矩阵:

        A   B   C   D
1   A   0   0   210 0
2   B   0   0   637 305
3   C   210 637 0   73
4   D   0   305 73  0

在下一步中,我将两个国家之间的距离为0的所有组合都设置为1,所有其他组合都设置为0,对角线再次设置为0:

wmat[wmat>0]<-5
wmat[wmat==0]<-1
wmat[wmat==5]<-0
diag(wmat)<-0

这给了我下面的矩阵:

        A   B   C   D
1   A   0   1   0   1
2   B   1   0   0   0
3   C   0   0   0   0
4   D   1   0   0   0

我要做的是自动为1960年至2014年之间的所有年份创建矩阵,对每一年进行更正,并将结果存储到矩阵列表中,在此列表中,我可以按年份回忆每个矩阵。

任何输入都非常欢迎。

阿克伦

你可以试试

lst <- lapply(1960:2014, function(x) {
           wmat <- distmatrix(as.Date(paste0(x, '-1-1')), 
             type="mindist", tolerance=0.5, useGW=FALSE)
           wmat[wmat>0]<-5
           wmat[wmat==0]<-1
           wmat[wmat==5]<-0
           diag(wmat)<-0
           wmat 

    }
  )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章