2013-04-25 4 views
2

저는 factor로 퀀 타이즈를 계산하고 xtable을 사용하여 결과 집합체를 라텍스 형식으로 출력하려고합니다. 불행히도, 나는 불안한 행동을하고 있습니다. 그리고 깨끗한 해결책이 인정 될 것입니다.집합을 통한 데이터 프레임의 행렬 합치기

tm <- data.frame(f=c("a","b","c"),v=runif(30)) 
tm$f <- factor(tm$f) 
agv <- aggregate(v~f,tm, quantile) 

출력 agv가 xtable 의해 허용되지 않는다 : COLS에

오류를 제공

xtable(agv) 

[내가 + POS] <

는 예를 만들려면 - do.call ("formatC", curFormatArgs) : 대체 할 항목 수가 replacem의 배수가 아닙니다. 분명히 dim(agv) 그래서 실제로 [1] 3 2

이다 나는 시도하기 때문에 엔트 길이

print(agv) 비록

f  v.0%  v.25%  v.50%  v.75%  v.100% 
1 1 0.002970944 0.253247687 0.571891610 0.766606825 0.986142807 
2 2 0.002129951 0.328739086 0.558132094 0.799115979 0.991067470 
3 3 0.011059184 0.285322522 0.496035672 0.770908599 0.994420787 

입니다 : 숫자 값으로 변환 문자 요소 결과

cbind(featureName=agv$f, agv$v) 

몇 가지 이유.

cbind(f=as.character(agv$f), data.frame(agv$v,check.names=F)) 

하는, 내가 xtable에서 원하는 나에게 결과를 제공합니다 : 시행 착오 후

이 난에 정착의 해결책이

\begin{table}[ht] 
\centering 
\begin{tabular}{rlrrrrr} 
    \hline 
& f & 0\% & 25\% & 50\% & 75\% & 100\% \\ 
    \hline 
1 & a & 0.00 & 0.25 & 0.48 & 0.75 & 0.99 \\ 
    2 & b & 0.00 & 0.28 & 0.46 & 0.74 & 1.00 \\ 
    3 & c & 0.02 & 0.21 & 0.44 & 0.63 & 1.00 \\ 
    \hline 
\end{tabular} 
\end{table} 

을 어쨌든, 난 그냥 궁금 해서요 더 적은 수의 라인이 포함 된 더 깨끗한 솔루션이 있는지 여부.

답변

3

약간 더 직접적인 접근 방식 (이미 수행 한 것과 개념적으로 다르지 않지만)은 do.call(data.frame, ...)을 사용하는 것이 좋습니다. 다음은 나를 위해 일한다. 당신은 또한 다음과 같은 것을 할 수 있도록

> xtable(do.call(data.frame, c(agv, check.names = FALSE))) 
% latex table generated in R 3.0.0 by xtable 1.7-1 package 
% Thu Apr 25 11:10:26 2013 
\begin{table}[ht] 
\centering 
\begin{tabular}{rlrrrrr} 
    \hline 
& f & v.0\% & v.25\% & v.50\% & v.75\% & v.100\% \\ 
    \hline 
1 & a & 0.06 & 0.27 & 0.38 & 0.64 & 0.94 \\ 
    2 & b & 0.20 & 0.38 & 0.52 & 0.70 & 0.87 \\ 
    3 & c & 0.01 & 0.22 & 0.60 & 0.87 & 0.99 \\ 
    \hline 
\end{tabular} 
\end{table} 

xtable 또한, data.table의 작동 : 리턴

나를 위해
xtable(do.call(data.frame, c(agv, check.names = FALSE))) 

, 여기

library(data.table) 

DT <- data.table(tm, key = "f") 
xtable(DT[, as.list(quantile(v)), by = key(DT)]) 

DT[, as.list(quantile(v)), by = key(DT)] "agv"객체와 동일한 결과를 제공합니다.

+0

+1 좋은 사용 data.table –

관련 문제