在 R 中创建距离矩阵列表
Create a list of distance matrices in R
使用 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
}
)
使用 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
}
)