首页 > 解决方案 > 如何从 R 输出中绘制直方图?

问题描述

我正在尝试从不是数据框的 R 输出中绘制直方图。以下是我的代码和输出。

x <- replicate(1000, 
               {y <- rpois(200, 1)
               {lambda0 <- 1
for(i in 1:1) 
  {
  if( i == 1 ) cat( sprintf("%15s %15s %15s %15s\n", "LogL", "Score", "Information", "New Estimate"))
  logL        <- sum((-lambda0) + y*(log(lambda0)))
  score       <- sum((y/lambda0)-1)
  information <- sum(y/(lambda0)^2)
  lambda1      <- lambda0 + score/information
  cat( sprintf("%15.4f %15.4f %15.4f %15.5f\n", logL, score, information, lambda1))
  lambda0 <- lambda1
}  
} 
               })

下面是我的输出

在此处输入图像描述

我正在尝试从输出中获取新的估计并创建直方图。你能帮忙吗?

谢谢你。

标签: rhistogram

解决方案


您需要在循环期间存储 New Estimate 的值。这样,您可以在循环完成后检索结果。通常在使用循环时,您预先指定一个变量,您可以在其中保存每次迭代的结果。例如:

numbers <- 1:3

result <- list(length = length(numbers)

for (i in seq_along(numbers){

result[[i]] <- numbers[[i]] + 1

}

在此示例中,有一个包含三个数字的向量,您希望将每个数字加一并保存结果。您可以通过创建一个长度为 3 的列表来做到这一点(添加长度更好,但不是必需的),并且对于每次i迭代,您将结果保存在i列表的第 th 元素中。

完成循环后,您可以从result变量中检索结果。i您可以使用方括号检索第th 结果: result[[i]]


推荐阅读