преобразование цикла из R в C ++ с использованием Rcpp

Я хочу повысить скорость некоторых из моего R-кода с помощью Rcpp. Однако я очень мало знаю C ++. Итак, я проверил документацию, поставляемую с Rcpp, и другие документы, представленные на сайте Дирка Эддельбюттеля. Прочитав все, я попытался выполнить простой цикл, который написал на R. К сожалению, мне это не удалось. Вот функция R:

Inverse Wishart

beta = matrix(rnorm(15),ncol=3)

a = rnorm(3) 

InW = function(beta,a) {

    n = nrow(beta)
    p = ncol(beta)
    I = diag(rep(1,times = p))
    H = matrix(0,nrow=p,ncol=p)
    for(i in 1:n){
    subBi = beta[i,]
          H = H + tcrossprod(a - subBi)
        }
    H = H + p * I

    T = t(chol(chol2inv(chol(H))))
    S = 0
    for(i in 1:(n+p)){
        u <- rnorm(p)
        S = S + tcrossprod(T %*% u)
        }
    D = chol2inv(chol((S)))
    ans = list(Dinv = S,D=D)
}

Я искренне признателен, если кто-нибудь может мне помочь, поскольку это послужит отправной точкой в ​​изучении Rcpp.

0
задан Kerrek SB 6 February 2012 в 00:27
поделиться