R中的sapply错误

时间:2013-06-10 23:02:21

标签: r sapply

我从Dirichlet分布生成100个随机数,然后我需要使用输出从Gamma分布生成。这是代码:

a <- rdirichlet(100, c(1,1,1))
b <- c(3,3,3)

sapply(a, function(x) {rgamma(100, shape=2, rate =(b%*%a)) })

此处请注意,伽马分布的速率是矢量b和a(这是Dirichlet的输出)的点积。

我收到此错误消息:

Error in b %*% a : non-conformable arguments

1 个答案:

答案 0 :(得分:1)

我怀疑你想要。我的库至少有四个具有rdirichlet函数的不同包。):

library(MCMCpack)
apply(a,  1, function(x) {rgamma(100, shape=2, rate =(b %*% x)) })

当向量传递给%*%时,则需要具有相同的长度,并且传递单个元素而不是长度为3的行。 (表达式中也没有“x”。)

c(3,3,3) %*% 1
#Error in c(3, 3, 3) %*% 1 : non-conformable arguments

 str(a %*% b) 
 # vectors can be assumed to be column matrices in the second position
 num [1:100, 1] 3 3 3 3 3 3 3 3 3 3 ...

或者:

> str(b %*% t(a))
# .... or assumed to be row matrices in the first position.
 num [1, 1:100] 3 3 3 3 3 3 3 3 3 3 ...