2017-10-18 6 views
2

私はコミュニティエコロジーを使っています。私は自分のマトリックスを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") 

これは私が一回の反復のためにどうなるのかです:

library(picante) 
x<-randomizeMatrix(com.dat, null.model = "richness", iterations = 1000) 
library(betapart) 
b<-beta.multi.abund(x, index.family = "bray") 

Bは、私がの998の他の値を維持していたいた値です。 だから私は今、私のループ作る能力は初心者レベルのままですが、私は上記のループが動作する必要があることを確信しているだけでrandomizeMatrix関数からの無作為化されている999個の行列

table<-list() 

for (i in 1:999) { 
    table[i]<-randomizeMatrix(com.dat, null.model = "richness", iterations = 
1000) 
} 

を取得するためのループを実行してみました。リストは、(私が知る限り)複数の行列を格納することができるので、table [i]は初期行列の999個の無作為化バージョンを保持できるはずですか?しかし、それを実行しようとするたびに、私のRstudioセッションがタイムアウトになります。

最終的に私は "b"の999のランダムな値を持つデータフレームを取得したいと思います。どんな助けもありがとう。

+0

使用してこれを行うことができます:999、機能(ⅰ)randomizeMatrix(com.dat、null.model = "を「豊かさ」、反復= 1000)) '行列のリストを作成する。また、 'for'ループを使用している場合は' list 'を必要な長さ、つまり 'lst < - vector(' list '、999)'に初期化し、 'lst [[i]] < - randomizeのような出力を割り当てます... – akrun

+0

@akrun okthankあなたは、関数コード 'b <-beta.multi.abund(x、index.family = "bray")'に3つの値のリストを追加したいと思っています。したがって、生成されたすべての行列が3つの値のリストを出力する場合、適用ファミリを使用して各行列の各値がその列にあるデータフレームを生成するにはどうすればよいですか?たとえば、行列番号1は私にリスト形式の3つの値のリストを与え、新しいデータフレームの1つの列にそれらの値をそれぞれ入れたいのですか? –

+0

私には完全にはっきりしていません。あなたは 'do.call(cbind、lapply(1:2、function(i){x akrun

答えて

1

私たちは、あなたが `lapply` i..e` lapply(1で行うことができますlapply

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 
関連する問題