私は、私のデータセットのすべてのプロットのペアワイズ比較の行列を持っています。行列の塗りつぶしは、プロット間で共有される種を表します。これらのプロットは、特定の領域に関連している元の行列を作るために使用された因子のレベルによって小さな行列に行列をサブセット化するためのループ
data<-
region plot species
1 104 A_B
1 105 B_C
1 106 A_B
1 107 C_D
2 108 B_C
2 108 E_F
2 109 B_C
2 109 E_F
2 110 E_F
:
Plot4 Plot5 Plot6 Plot7 Plot8 Plot9 Plot10
Plot4 NA NA NA NA NA NA NA
Plot5 0 NA NA NA NA NA NA
Plot6 1 0 NA NA NA NA NA
Plot7 0 0 0 NA NA NA NA
Plot8 0 1 0 0 NA NA NA
Plot9 0 1 0 0 2 NA NA
Plot10 0 0 0 0 1 1 NA
この行列は、次のデータフレームから来ました。今、私は地域の行列のリストを作成する地域によって上記より大きな行列をサブセットループを作成したい、しかし
plots<-unique(data$plot)
plot.num<-length(plots)
output<-matrix(0, plot.num, plot.num)
for (i in 1:plot.num) {
for (j in 1:plot.num) {
plot_i<-data[data$plot==plots[i],]
plot_j<-data[data$plot==plots[j],]
output[i,j]<-length(intersect(plot_i$species, plot_j$species))
}
}
F.mat<-output
F.mat[lower.tri(F.mat, diag=T)]<-0
:私はすべての500個のプロットのために、この一対比較行列を作成し、次のループを生成しました。
output<-
[[1]]
Plot4 Plot5 Plot6 Plot7
Plot4 NA NA NA NA
Plot5 0 NA NA NA
Plot6 1 0 NA NA
Plot7 0 0 0 NA
[[2]] Plot8 Plot9 Plot10
Plot8 NA NA NA
Plot9 2 NA NA
Plot10 1 1 NA
注:これは存在/非存在ではありません。あなたが領域の上の機能にあなたの評価を入れた後、lapply
でき
おそらく使用あなたのdata.frameのdput()、および編集し、それを起動し、データ、マトリックス、ループとその結果の行列、次にリスト一般的に、dput()データから始めて、物事が楽になります。構造体をここに貼り付けます。確かではありませんが、通常のように答えは42です。[link](https: /stackoverflow.com/questions/17367277/how-to-extract-intragroup-and-intergroup-distances-from-a-distance-matrix-in-r) – Chris