0

我试图找到分析模拟数据的最简单方法。我的输出“a”看起来像这样,typeof(a)="list"来自class(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)拉出 adata.frameaggregate从那里使用:

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

应该做你想做的——假设我明白你想要什么!

(我认为你需要unlist,因为你有你matrixlists)

于 2013-11-06T15:37:01.660 回答