如何从 R 输出绘制直方图?
How to plot histogram from the R output?
我正在尝试从不是数据框的 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
}
}
})
下面是我的输出
我正在尝试从输出中获取新的估计值并创建直方图。你能帮忙吗?
谢谢。
您需要在循环期间存储新估计值。这样您就可以在循环结束后检索结果。通常在使用循环时,您会预先指定一个变量,您可以在其中保存每次迭代的结果。例如:
numbers <- 1:3
result <- list(length = length(numbers)
for (i in seq_along(numbers){
result[[i]] <- numbers[[i]] + 1
}
在此示例中,有一个包含三个数字的向量,您希望将每个数字加一并保存结果。您可以通过创建一个长度为 3 的列表(增加长度更好,但不是必需的)来做到这一点,并且对于每个 i
th 迭代,您将结果保存在列表的第 i
th 元素中。
完成循环后,您可以从 result
变量中检索结果。您可以使用方括号检索第 i
个结果:result[[i]]
.
我正在尝试从不是数据框的 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
}
}
})
下面是我的输出
我正在尝试从输出中获取新的估计值并创建直方图。你能帮忙吗?
谢谢。
您需要在循环期间存储新估计值。这样您就可以在循环结束后检索结果。通常在使用循环时,您会预先指定一个变量,您可以在其中保存每次迭代的结果。例如:
numbers <- 1:3
result <- list(length = length(numbers)
for (i in seq_along(numbers){
result[[i]] <- numbers[[i]] + 1
}
在此示例中,有一个包含三个数字的向量,您希望将每个数字加一并保存结果。您可以通过创建一个长度为 3 的列表(增加长度更好,但不是必需的)来做到这一点,并且对于每个 i
th 迭代,您将结果保存在列表的第 i
th 元素中。
完成循环后,您可以从 result
变量中检索结果。您可以使用方括号检索第 i
个结果:result[[i]]
.