将变量保存在R中的矩阵中

时间:2016-04-18 21:28:05

标签: r for-loop matrix fitdistrplus

是否可以在R ..

中存储变量

我必须计算10 * 324 fitdist,这个函数的每个输出必须存储在一个大小超过的矩阵中? R是可能的吗?

若然后如何,我完全失去了?

所以我尝试创建一个简单的例子

norm_dist <- as.data.frame(matrix(nrow=3,ncol=3))
data(iris)
for(i in 1:3)
{
  for(j in 1:3)
  {
    print(i)
    print(j)
    if(j==1)
    {
      element = fitdist(data =iris$Petal.Width[1:50*i], distr = "norm")
      norm_dist[i,j] = element
    } 
    if(j==2)
    {
      element = fitdist(data =iris$Petal.Length[1:50*i], distr = "norm")
      norm_dist[i,j] = element
    } 
   if(j==3)
    {
      element = fitdist(data =iris$Sepal.Length[1:50*i], distr = "norm")
      norm_dist[i,j] = element
    } 
  }

}

但是我收到了这个错误

Error in `[<-.data.frame`(`*tmp*`, i, j, value = list(estimate = c(0.867771222640304,  : 
  replacement element 4 is a  matrix with 2 rows, needs 1 

我不确定我明白这是什么意思......

1 个答案:

答案 0 :(得分:1)

您可能需要查看“值”部分下的?fitdist文档。它提到了函数的输出,这是一个包含少量组件的列表。

您要将哪个值分配到norm_dist?例如,如果您想要对数似然,则可以使用norm_dist[i,j] = element$loglik

如果要存储要存储的整个对象,则需要一个列表而不是data.frame,例如。

norm_dist_res <- list()
for(i in 1:10)
{
    for(j in 1:324)
    {
        norm_dist_res[[paste0(i,"-",j)]] <- fitdist(data=g_all_p$data[1:8000*i, j], distr="norm")
    }
}