用于通过用于制作原始矩阵的因子级别将子集矩阵循环到较小矩阵中

时间:2017-05-31 00:36:55

标签: r matrix

我有一个对数组中所有图的成对比较矩阵。矩阵填充表示图之间的共享物种。

    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

此矩阵来自以下数据框:

  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

这些图与某些地区有关。我生成了以下循环,为所有500个图创建了这个成对比较矩阵:

 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

但是,现在我想创建一个循环,按区域对上面的较大矩阵进行子集化,以生成区域矩阵列表。

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

注意:这是一个不存在/不存在的定量矩阵。

1 个答案:

答案 0 :(得分:0)

您可以将评估放入函数中,然后var admin = require("firebase-admin"); var serviceAccount = require("./path to service account"); admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: "https://<database>.firebaseio.com" }); 放在区域上:

{{1}}