如何解决“需要数字/复杂矩阵/向量参数”矩阵乘法中的错误与正确形状和大小的矩阵
我想生成长度为 n 的泊松分布随机向量。出于测试目的,我将强度向量 lambda 定义为 lambda <- c(1:12)
。最初我认为使用 lapply 函数生成随机向量是一个简单的过程,因为我们可以简单地写
vec <- as.matrix(lapply(lambda,function(s) rpois(1,s)))
但是对于任何大小合适的矩阵,例如B <- matrix(data = rep(1,84),nrow = 7,ncol = 12)
我们在矩阵乘法中得到
B%*%vec
给予
B %*% vec 中的错误:需要数字/复矩阵/向量参数
我认为我可能在 lapply 上做错了什么,但是创建一个空的 12x1 向量并将泊松分布值插入到它的组件中产生了同样的错误。
那么首先,是什么导致了这个错误?其次,是否有一种方便的方法可以从任意 p.r. 创建长度为 n 的随机向量?分布?
解决方法
您创建的 vec
是一列列表(因为您的 lapply
调用)。您可以通过检查第一个元素来看到这一点:
vec[1,]
[[1]]
[1] 1
另一种方法是将您的 lambda 向量直接提供给 rpois
:
vec <- rpois(12,lambda = 1:12)
B <- matrix(1,nrow = 7,ncol = 12)
B %*% vec
[,1]
[1,] 87
[2,] 87
[3,] 87
[4,] 87
[5,] 87
[6,] 87
[7,] 87
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。