如何将一次性for循环的所有输出保存到表/矩阵/数组

时间:2019-01-19 14:49:39

标签: r for-loop simulation

我有一些代码,该代码使用for循环从列表中半随机选择10列(每列都是物种标识),然后使用关联的丰度值从列表中创建物种多样性和丰富度值。它将对每一行重复此操作100次(行是位置数据,即数据所来自的网格参考),然后在运行下一行模拟时创建并保存平均值并覆盖所有数据。

我想做的就是保存它为每行数据创建的所有100个物种多样性值,然后再对其进行覆盖并将其插入如下所示的表中:

 Grid Reference  | Species Diversity  | Species Richness

 1               | rep1 value         | rep 1 value

 1               | rep2 value         | rep 2 value

在将这张表与我将要研究的其他期间中得出的表格合并后,我可以在年份和网格参考之间进行比较

我尝试命令它根据第一组括号内的WeightedSample和DiversitySample数据创建表格,但这最终仅列出了一次模拟的100个多样性值的列表,而没有数据所属的网格

我也试图研究其他可能的命令和方法,但是对于使用R或任何一种编程语言我还是很陌生。任何人都可以提供的任何帮助将不胜感激。我已经在下面开始添加了代码。

data1xtab<-xtabs(abundance~grid+sp_code,data=data1)

library(vegan)

# Create some empty vectors to save the mean and SE values for diversity 
and species richness
Diversity10<-DiversitySE10<-RichnessSE10<-Richness10<- 
vector(length=nrow(data1xtab))

# A big "for loop" that will run the simulations. Right now this takes each 
row of the xtab data in turn and runs 100 simulations on it
for(x in 1:nrow(data1xtab)){

  DiversitySample<-vector(length=100)
  SpeciesRichnessSample<-vector(length=100)

  for(y in 1:100){


   WeightedSample<- 
sample(colnames(data1xtab),size=10,prob=data1xtab[x,],replace=TRUE)


    DiversitySample[y]<-diversity(table(WeightedSample))
    SpeciesRichnessSample[y]<-specnumber(table(WeightedSample))

  }


  Diversity10[x]<-mean(DiversitySample)
  DiversitySE10[x]<-sd(DiversitySample)/sqrt(length(DiversitySample))

    Richness10[x]<-mean(SpeciesRichnessSample)
  RichnessSE10[x]<- 
sd(SpeciesRichnessSample)/sqrt(length(SpeciesRichnessSample))
}

0 个答案:

没有答案