在矩阵中存储函数(具有多个输出)的输出

时间:2013-03-14 03:43:44

标签: r

我有一个数据集,分为20组。存储每组数据的矩阵(2列数据)存储在列表中,这样我就可以在循环内的每个集合上执行函数。我想存储我可能在另一个矩阵中运行的任何函数的输出。

例如,如果我在所有20个组上运行fitdistr(),我希望函数的输出存储在矩阵中,这样我就可以调用distribution [1]来调用组1的结果。我有尝试了以下内容:

distribution<-ls()

for(i in (1:20))
  { distribution[[i]]<-fitdistr(as.numeric(data[[i]]$Column2,"normal") }

这成功存储了输出,我可以打电话:

distribution[1] 

问题是fitdistr()导致2列数据 - 平均值和标准差。我检查过我不能称之为给定点的平均值:

names(distribtuion)
"NULL"

所以我显然不能打电话获取手段,请说:

distribution[1]$mean

我将寻找平均值和标准差的趋势(以及其他分布的其他参数),所以我希望fitdistr()的结果以某种方式存储在矩阵中,如果可能的话。即使我能以某种方式只调用说,平均值,在运行函数时,我可以创建一个空向量并在循环中填充它,然后重复标准偏差。

我考虑创建一个足够大的空矩阵来存储数据(因此它将是20行,每组1个,2个列,每个计算值1个)。我仍然不确定如何指示我希望存储在第1列中的计算平均值和存储在第2列中的计算标准偏差。同样,这是一次只询问函数中多个输出中的一个的问题。

我也研究了其中一个应用函数,但这些似乎不适合我正在做的事情。

1 个答案:

答案 0 :(得分:0)

ls()是一个列出给定环境中对象的函数。它返回一个字符向量。

你(可能)意味着拥有list()

但是你会在循环中增加你的列表。这是R地狱的第二个圈子。

而是使用lapply来使用相应的功能(很难说明你希望as.numeric去哪里,但在你的例子中它不正确。)

类似......

distribution <- lapply(data, function(x) fitdistr(as.numeric(x[['Column2']]),"normal"))