0

这是对我之前提出(并已得到回答)关于从多输出函数中提取特定输出的问题的后续。我已经成功调用了简单的输出,比如 summary() 调用的平均值,但是我很难按照类似的过程从 fitdistr() 函数中提取输出。

例如,当我使用“正态”分布运行此函数时,输出为均值和 sd:

> storage<-fitdistr((as.numeric(diameter.bin[[1]]$Strength)),"normal")

>       storage
      mean          sd    
>0.81428910     0.89574658

>(0.04360426) (0.03083287)

当我查找(我正在使用 Rstudio,我可以查看存储的变量/矩阵等)时,我的“存储”变量中究竟存储了什么,我得到了这个:

structure(list(estimate = structure(c(0.814289099526066, 0.89574657988675
), .Names = c("mean", "sd")), sd = structure(c(0.0436042612645108, 
0.0308328688287655), .Names = c("mean", "sd")), vcov = structure(c(0.00190133160042372, 
0, 0, 0.00095066580021186), .Dim = c(2L, 2L), .Dimnames = list(
c("mean", "sd"), c("mean", "sd"))), n = 422L, loglik = -552.330814327093), .Names = c("estimate", "sd", "vcov", "n", "loglik"), class = "fitdistr")

我想做的只是提取平均值(“平均值”列下的第一个条目,而不是括号中的那个)。我尝试了以下方法:

> test<-storage["estimate"]

> test

>$estimate
>     mean        sd 

>0.8142891 0.8957466 

这样我就可以成功拉出第一行数据了。现在我坚持只提取平均值。我存储的变量'test',看起来应该有名字'mean'和'sd',实际上没有名字可以调用。这是存储在我的“测试”变量中的内容:

结构(列表(估计 = 结构(c(0.814289099526066,0.89574657988675),.Names = c(“平均值”,“sd”))),.Names = “估计”)

我可以看到实际上名称“mean”和“sd”是我的测试变量的一部分,但我似乎无法访问它们。当我尝试:

> names(test)

>[1] "estimate"

> test["mean"]

>$< N A >

>NULL

任何人都知道如何访问其他“级别”的名称,我将不胜感激!

4

1 回答 1

3

当您感到困惑时,请使用str以获得对象的正确结构。

str(storage)
List of 5
 $ estimate: Named num [1:2] 0.814 0.896
  ..- attr(*, "names")= chr [1:2] "mean" "sd"
 $ sd      : Named num [1:2] 0.0436 0.0308
  ..- attr(*, "names")= chr [1:2] "mean" "sd"
 $ vcov    : num [1:2, 1:2] 0.001901 0 0 0.000951
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:2] "mean" "sd"
  .. ..$ : chr [1:2] "mean" "sd"
 $ n       : int 422
 $ loglik  : num -552
 - attr(*, "class")= chr "fitdistr"

mean 和 sd 在估计变量中,我看到$下一个估计值,所以我这样做

storage$estimate
     mean        sd 
0.8142891 0.8957466 

然后我做

storage$estimate[1]

或者

storage$estimate['mean']

    mean 
0.8142891 
于 2013-03-20T06:51:02.980 回答