R 您将如何运行循环以随机化社区矩阵并存储它们?
我从事社区生态学的工作,我试图将我的矩阵随机化999次,并为999次中的每一次提取贝塔多样性值。这将有希望给我一个空分布来比较我的实际值。然而,我很难运行循环函数来实现这一点 下面是一些示例数据: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
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..elappy(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