0

我有一个数据集,分为 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"

所以我显然不能调用 get 方法,比如:

distribution[1]$mean

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

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

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

4

1 回答 1

0

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

你(可能)的意思是拥有list().

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

而是使用lapply适当的功能(很难说出您想要as.numeric去哪里,但在您的示例中不正确)。

就像是..

distribution <- lapply(data, function(x) fitdistr(as.numeric(x[['Column2']]),"normal")) 
于 2013-03-14T03:50:46.543 回答