-1

我一直在努力寻找解决以下问题的方法,但我找不到。如果这是重复的,我提前道歉,如果您指示我回答,我将删除这个问题。

我有一个list(Mylist),其中每个元素都包含许多不同的字段。我对称为“系数”的数字向量感兴趣。因此,我可以选择与i'th列表实例相关的系数作为

Mylist[[i]]$coefficients

但我如何获得总体的coefficients平均值i?平均值仅作为示例。我通常感兴趣的是如何在列表的每个字段包含多个//等的列表上data.frame计算函数matrixstring

更新:正如下面 Thomas 所提供的,这里有一些针对该问题的虚假数据:

Mylist <- replicate(10,data.frame(coefficients=rnorm(20),
                              something=rnorm(20)), simplify=FALSE)

我试过查看lapply,但由于“Mylist”还有其他字段,coefficients我不知道该怎么做。

谢谢!

4

2 回答 2

3

如果您想要所有列表中所有系数的平均值,请尝试...

mean( unlist( sapply( Mylists , function(x) `[`(x , 'coefficients') ) ) )

但是,你应该澄清你想要什么,因为不清楚你是否想要......

# A mean for each set of coefficients
sapply( Mylists , function(x) mean( x$coefficients ) )

# The mean for each coefficient across all lists
rowMeans( sapply( Mylists , function(x) x$coefficients ) )
于 2013-08-20T11:56:08.053 回答
3

您可能需要提供有关数据确切结构的更多详细信息,但这里有一个简单的示例:

# some fake data:
mylist <- replicate(10,data.frame(coefficients=rnorm(20),
                                  something=rnorm(20)), simplify=FALSE)
# take the grand mean:
mean(sapply(mylist,function(x) x$coefficients))

但也许您想要所有列表条目中每组相应系数的平均值,您可以通过以下任一方法获得平均值(它们是相同的):

colMeans(do.call(rbind,lapply(mylist,function(x) x$coefficients)))
rowMeans(do.call(cbind,lapply(mylist,function(x) x$coefficients)))

@SimonO101 正确指出的简化为:

rowMeans(sapply(mylist, function(x) x$coefficients))

因为sapply它只是lapply为您简化的包装器。

于 2013-08-20T11:57:43.043 回答