2015-01-29 11 views
0

1 년 전에 작성한 코드를 실행하려고하는데 어떤 이유로이 시간에 작동하지 않습니다. 이전에는 행렬 변수 alpha와 prob를 R에 입력했습니다. 그러나 이번에는 이들을 CSV 파일로 가져 오기 때문에 각 반복으로 수정하기가 더 쉽습니다. 현재 R x64 2.12.2를 실행 중입니다. 나는 gtools, splines 및 stat4 패키지를로드했습니다.rdirichlet 배포가 R에서 작동하지 않습니다.

alpha <- read.csv("AlphaOriginal.csv", header = FALSE) 
prior <- array(0,c(45,45)) 
for (j in 1:45) prior[j,] <- rdirichlet(1,alpha[j,]) 

prob <- read.csv("ProbOriginal.csv", header = FALSE) 
data <- array(0,c(45,45)) 
for (i in 1:45) data[i,] <- rmultinom(1,1,prob[i,]) 

posterior <- data%*%prior 

write.table(posterior, file = "PosteriorOriginal.csv", row.names = FALSE, na = "", col.names = FALSE, sep = ",") 

rdirichlet 행 다음에 다음 오류가 발생합니다.

Error in rgamma (1*n, alpha) : invalid arguments 

누구든지이 오류의 의미와 해결 방법을 알고 있습니까? Thx

+0

왜 4 년 된 r 빌드를 실행하고 있습니까? – rawr

+0

최소한의 재현 가능한 예는 제공하지 않았습니다. 예. '알파 '? –

+0

4 살짜리 빌드는 우리 대학의 통계 수업에서 사용했기 때문에 아직도 사용하고 있습니다. – ams9q8

답변

0

'rdirichlet'도움말 페이지를 살펴보면 'alpha'인수는 data.frame이 아닌 벡터 여야합니다. 따라서해야 할 일 :

rdirichlet(1, unlist(alpha[j,])) 
+0

내 알파 값이 단일 라인 벡터가 아닌 매트릭스 인 경우이 기능이 작동합니까? 내가 'unlist'에서 찾을 수있는 것부터, 내 행렬을 단일 행으로 평면화하여 계산에 영향을줍니다. 행렬에 대해 'unlist'와 비슷한 것이 있습니까? – ams9q8

+0

나는 이미 알파가 매트릭스라고 가정했지만 코드에서 알파 [j]를 썼다. 이것은 매트릭스의 j 번째 행에 해당 할 것이다. – ahab