0

是否可以将变量存储在 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 

我不确定我明白这意味着什么......

4

1 回答 1

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")
    }
}
于 2016-04-19T01:35:47.760 回答