0

シミュレーションからデータを分析する最も簡単な方法を見つけようとしています。私の出力「a」は次のようになり、typeof(a)="list"fromclass(a)="matrix"です。

> a
      Variable Trial Bgraph Afgraph Mlog  
 [1,] 0.2      1     List,9 List,9  List,4
 [2,] 0.2      2     List,9 List,9  List,4
 [3,] 0.2      3     List,9 List,9  List,4
 [4,] 0.3      1     List,9 List,9  List,4
 [5,] 0.3      2     List,9 List,9  List,4
 [6,] 0.3      3     List,9 List,9  List,4

ここで、"a" はリスト行列、"Variable" は変数の値、"Trial" は試行番号です。その値の場合、「Bgraph」と「Afgraph」はグラフ オブジェクトです。それらは単一のグラフ オブジェクトclass(a[[1,4]])="igraph"です。R はそれらを 9 項目のリストとして保存します。最後に、「Mlog」は、異なる次元の 4 つの行列を含むマスター ログです。これらのオブジェクトをさまざまな関数に渡し、平均を見つけたいと思います。

シンプルにするために、関数をより単純なものに置き換えました。

Q.1 plyrを使用して、各変数の試行の平均エッジ数を取得したいと考えています。私の最善の試みは、個々のエッジ数である次の結果をもたらします。

ldply(a[,4],function(inp){mean(ecount(inp))})

Q.2 data.table パッケージの by も試してみましたが、data.table のキーとしてリストを保持できません。「a」を配列として保持すると、igraph オブジェクトのクラスが失われます。

require(igraph); graph<- erdos.renyi.game(10, .4, "gnp")いくつかの igraph オブジェクトを作成します。ecount(graph)エッジをカウントするための組み込み関数です。

助けてくれてありがとう。:)

4

1 に答える 1

1

Variable(およびおそらくTrials) を a に引き出して、そこからdata.frame使用します。aggregate

df <- data.frame(Variable=unlist(a[,1]), Trial=unlist(a[,2]))
df$Edges <- laply(a[,4],ecount)
aggregate(Edges ~ Variable, data=df, mean)

あなたが望むことを私が理解していると仮定すると、あなたが望むことをする必要があります!

( ofunlistを持っているので、必要になると思います)matrixlist

于 2013-11-06T15:37:01.660 に答える