【发布时间】:2017-12-07 16:59:28
【问题描述】:
我有一个名为 all.priors 的函数(请参阅下面的 R 代码)。我的目标是从for 循环内的curve() 调用中获取x 和y,并将这些xs 和ys 保存为对象h。
(我想在h 中有101 行和2*length(d) 列。这样,每2 列包含来自curve() 的x 和y 在for 循环中运行.)
问题:
如何正确保存来自curve() 调用的xs 和ys? [我收到错误:incorrect number of subscripts on matrix]
all.priors = function(a, b, lo, hi, d, Bi = 55, n = 1e2){
h = matrix(NA, 101, 2*length(d))
for(i in 1:length(d)){
p = function(x) get(d[i])(x, a, b)
prior = function(x) p(x)/integrate(p, lo, hi)[[1]]
likelihood = function(x) dbinom(Bi, n, x)
posterior = function(x) prior(x)*likelihood(x)
h[i,] = curve(posterior, ty = "n", ann = FALSE, yaxt = "n", xaxt = "n", add = i!= 1, bty = "n")
}
}
#Example of use:
all.priors(lo = 0, hi = 1, a = 2, b = 3, d = c("dgamma", "dnorm", "dcauchy", "dlogis"))
【问题讨论】:
-
我不明白你想要的输出是什么。在
h的每一行和每一列中你想要什么?curve()返回一个包含组件x和y的列表。您不能直接将列表存储在矩阵中。 -
@MrFlick,我要保存
x和y的每一组,然后分别绘制每组? -
这并不能更好地解释事情。您希望从该函数返回的数据的结构究竟如何?
-
@MrFlick,我明白了,所以我想在
h中有101行和2*length(d)列?这样,每 2 列包含来自curve()的x和y在for循环中运行。 -
@MrFlick,行数和列数有意义吗?您认为以这种方式存储
x和y是否适合单独绘制它们?