2013-09-04 5 views
2

기술적 인 문제가있어 직접 해결할 수 없습니다. mcmcglmm 패키지로 견적을 냈습니다. 결과 $ Sol에 의해 추정 된 사후 분포에 접근 할 수 있습니다. class()을 적용하면 객체의 클래스가 "mcmc"임을 알 수 있습니다. as.data.frame()을 사용하면 다른 데이터 프레임 (많은 다른 데이터 프레임을 포함하는 하나의 데이터 프레임)을 포함하는 중첩 데이터 프레임이됩니다. 모든 후방 분배의 모든 값과 (보조) 데이터 프레임의 이름을 rowname으로하여 하나의 데이터 프레임 (또는 오히려 벡터)을 생성하기 위해 주 데이터 프레임 내의 모든 데이터 프레임을 rbind()으로 보내고 싶습니다. ., 어떤 아이디어? 나는 모든 힌트에 감사 할 것입니다!중첩 데이터 프레임

업데이트 : 이러한 모든 샘플링 체인을 사용하여 stackoverflow를 위해 유용한 데이터 세트를 생성하지 못했습니다. 이러한 데이터 세트는 항상 너무 큽니다. 당신이 나를 돕고 싶다면, 다음 (exemplaric) 모델 모든 체인이 저장되는 위치를 $ 솔 (AN MCMC 개체)입니다

require(MCMCglmm) 
data(PlodiaPO) 
result <- MCMCglmm(PO ~ plate + FSfamily, data = PlodiaPO, nitt = 50, thin = 2, burn = 10, verbose = FALSE) 

결과를 실행하는 데 고려하시기 바랍니다. 나는 모든 사후 분포의 모든 값과 변수 이름을 rownames로 갖는 벡터를 가지기 위해 (또는 중복 된 rownames가 추가 문자 벡터로 허용되지 않기 때문에) 모든 사슬을 역전시키고 싶다.

+0

'as.data.frame (모델 1)'를 사용 : as.data.frame.default에 오류 (모델 1) : 클래스 ''MCMCglmm ''을 data.frame'으로 강제 변환 할 수 없습니다. 당신은 그렇게 않았다 방법? – Metrics

+0

@Metrics이 클래스는'MCMCglmm' 클래스가 아니기 때문에 $ Sol 컴포넌트를 특별히 의미한다고 상상합니다. – Joe

+1

'?'다음에'results'를 생성 한 함수의 이름이옵니다. 세부 정보 섹션을 확인하십시오. 일반적으로 패키지 문서는 특정 객체의 구성 요소에 액세스하는 방법을 설명합니다. –

답변

3

(MCMCglmm의 예제 코드를 사용하여) as.data.frame (model $ Sol)이 데이터 프레임의 데이터 프레임을 제공하는 예제를 구성 할 수 없습니다. 그래서 아마 간단한 대답 일지라도 그것을 매우 쉽게 확인할 수는 없습니다.

그렇다면 여기에 도움이 될만한 예가 있습니다. 자식 데이터 프레임에 동일한 이름이없는 경우에는 작동하지 않습니다.

# create a nested data.frame example to work on 
a.df <- data.frame(c1=runif(10),c2=runif(10)) 
b.df <- data.frame(c1=runif(10),c2=runif(10)) 
full.df <- data.frame(1:10) 
full.df$a <- a.df 
full.df$b <- b.df 
full.df <- full.df[,c("a","b")] 

# the solution 
res <- do.call(rbind,full.df) 

편집

좋아, 당신의 새로운 예를 들어,

require(MCMCglmm) 
data(PlodiaPO) 
result<- MCMCglmm(PO ~ plate + FSfamily, data=PlodiaPO,nitt=50,thin=2,burn=10,verbose=FALSE) 
melt(do.call(rbind,(as.data.frame(result$Sol)))) 
+0

이 작동하지 않는 것 같습니다. 나는 집에 돌아 왔을 때 재현 할 수있는 예제를 제공하려고 노력할 것이다. 지금 당장 고마워요! – chameau13

+0

당신은 나를 올바른 길로 인도했습니다! 정말 고맙습니다! 제안 된 솔루션의 결과에 melt()를 적용하면 모든 매개 변수의 사후 분포가있는 프레임과 매개 변수의 이름이있는 벡터가 내가 원하는 것을 제공합니다. 그에 따라 답변을 변경하면 올바르게 표시하고 점수를 수집합니다. (미안, 내 질문이 혼란 스럽다면) – chameau13

+0

나는 내가 그 자신을 할 수 있다는 것을 깨달았다! 다시 한 번 감사드립니다! – chameau13