Я пытаюсь вычислить квантили по фактору и распечатать полученный агрегат в формате латекса, используя 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}
Во всяком случае, мне просто любопытно, есть ли более чистое решение с меньшим количеством задействованных строк.