使用Rcpp从列表进行迭代采样

时间:2018-10-16 17:04:30

标签: c++ r rcpp

所以我有以下问题。下面的代码使用状态向量的当前值,对列表M进行一些迭代采样,以确定状态向量的下一个值。该代码有效。但是,对于更大的列表M,采样过程将花费很长时间。我读到,通过使用Rcpp软件包,您可以大大加快该过程。但是,在工作了几个小时之后,我被卡住了!不仅C ++似乎没有类似的示例函数,而且C ++中的数据操作和访问不像R中那样简单。那么如何使用Rcpp包转换下面看似简单的代码?任何帮助将不胜感激!!!

state <- c(2, NA, NA, NA)
M <- list(matrix(c(0.2, 0.3, 0.5, 0.6, 0.3, 0.1, 0.1, 0.8, 0.1), nrow = 3, 
     ncol = 3), matrix(c(0.2, 0.3, 0.5, 0.6, 0.3, 0.1, 0.1, 0.8, 0.1), 
     nrow = 3, ncol = 3), matrix(c(0.2, 0.3, 0.5, 0.6, 0.3, 0.1, 0.1, 0.8, 
     0.1), nrow = 3, ncol = 3))

for (i in 1:3) {

state[i + 1] <- sample.int(3, size = 1, prob = M[[i]][state[i], ])

}

0 个答案:

没有答案