2

分位数を因子で計算し、結果の集計を 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 で受け入れられません:

xtable(agv)

与える

cols[, i + pos] のエラー <- do.call("formatC", curFormatArgs) : 置換するアイテムの数が置換長の倍数ではありません

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

どうやらdim(agv)実際に[1] 3 2

だから私は試しました:

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}

とにかく、関係する行数が少ない、よりクリーンなソリューションがあるかどうかに興味があります。

4

1 に答える 1