Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 您将如何运行循环以随机化社区矩阵并存储它们?_R_Matrix_Random - Fatal编程技术网

R 您将如何运行循环以随机化社区矩阵并存储它们?

R 您将如何运行循环以随机化社区矩阵并存储它们?,r,matrix,random,R,Matrix,Random,我从事社区生态学的工作,我试图将我的矩阵随机化999次,并为999次中的每一次提取贝塔多样性值。这将有希望给我一个空分布来比较我的实际值。然而,我很难运行循环函数来实现这一点 下面是一些示例数据: com.dat<-matrix(c(10,0,0,0,5,0, 0,3,4,0,0,9, 0,0,8,6,0,0, 7,0,9,0,0,0, 5,3,2,2,1,2),nrow=5,byrow=TRUE) rownames(com.dat)<-c("Site1","Site2","Sit

我从事社区生态学的工作,我试图将我的矩阵随机化999次,并为999次中的每一次提取贝塔多样性值。这将有希望给我一个空分布来比较我的实际值。然而,我很难运行循环函数来实现这一点

下面是一些示例数据:

com.dat<-matrix(c(10,0,0,0,5,0, 0,3,4,0,0,9, 0,0,8,6,0,0, 7,0,9,0,0,0, 
5,3,2,2,1,2),nrow=5,byrow=TRUE)
rownames(com.dat)<-c("Site1","Site2","Site3","Site4","Site5")
colnames(com.dat)<-
c("Species1","Species2","Species3","Species4","Species5","Species6")

com.dat我们可以使用
lappy

do.call(rbind, lapply(1:2, function(i) {
      x <-  randomizeMatrix(com.dat, null.model = "richness", iterations = 1000)
      unlist(beta.multi.abund(x, index.family = "bray"))
    }))
#     beta.BRAY.BAL beta.BRAY.GRA beta.BRAY
#[1,]     0.7686567   0.008321701 0.7769784
#[2,]     0.6693548   0.012815704 0.6821705
do.call(rbind,lappy)(1:2,函数(i){

x您可以使用一个
lappy
i..e
lappy(1:999,函数(i)randomizeMatrix(com.dat,null.model=“richness”,iterations=1000))
要创建矩阵的
列表
。另外,如果您使用
for
循环,请将
列表
初始化为所需的长度,即
lst@akrun-ok谢谢,我想补充一点,函数代码位对我来说并不完全清楚。是否需要
Do.call(cbind,lappy(1:2,函数(i)){x@akrun几乎是!除了我希望列是bray.bal、bray.gray和beta.bray(在您的示例中它们是行),并且我希望这些行代表我使用该函数发布的每个矩阵(即999行),以及您请求的更改
table<-list()

for (i in 1:999) {
  table[i]<-randomizeMatrix(com.dat, null.model = "richness", iterations = 
1000)
}
do.call(rbind, lapply(1:2, function(i) {
      x <-  randomizeMatrix(com.dat, null.model = "richness", iterations = 1000)
      unlist(beta.multi.abund(x, index.family = "bray"))
    }))
#     beta.BRAY.BAL beta.BRAY.GRA beta.BRAY
#[1,]     0.7686567   0.008321701 0.7769784
#[2,]     0.6693548   0.012815704 0.6821705