您显示的错误是因为ks.test 的输出不是表格输出,也不是xtable 可以理解的格式。输出如下所示:
> x <- rnorm(50)
> y <- runif(30)
> # Do x and y come from the same distribution?
> (res <- ks.test(x, y))
Two-sample Kolmogorov-Smirnov test
data: x and y
D = 0.46, p-value = 0.0004387
alternative hypothesis: two-sided
这并不是真正的表格。为了让它与ks.test 一起工作,您需要为"htest" 类编写一个xtable 的方法(这是ks.test 返回的对象类型。其他类型的对象已经存在几种方法对象:
> require(xtable)
Loading required package: xtable
> methods(xtable)
[1] xtable.anova* xtable.aov*
[3] xtable.aovlist* xtable.coxph*
[5] xtable.data.frame* xtable.glm*
[7] xtable.lm* xtable.matrix*
[9] xtable.prcomp* xtable.summary.aov*
[11] xtable.summary.aovlist* xtable.summary.glm*
[13] xtable.summary.lm* xtable.summary.prcomp*
[15] xtable.table* xtable.ts*
[17] xtable.zoo*
Non-visible functions are asterisked
"htest" 类相当常见(它用于大多数而不是所有 R 经典测试),所以我敢说没有xtable.htest 是因为像这样的假设检验的结果不适合表格输出 - 例如,KS 测试输出中只有两个感兴趣的数字。
正如我在评论中所说,我将在文本中直接引用测试统计 D 和 p-value。
如果您有多个测试并想要总结它们,请将多个 ks.test 运行的输出收集到一个数据框中,然后在该数据框上使用 xtable(这将起作用,因为它有一种方法) .要将多个 ks 测试合并到一个表(一个数据框)中,您可以执行类似
df.res <- data.frame(D = c(res$statistic, res$statistic),
`p value` = c(res$p.value, res$p.value))
xtable(df.res)
给出:
> df.res <- data.frame(D = c(res$statistic, res$statistic),
+ `p value` = c(res$p.value, res$p.value))
> xtable(df.res)
% latex table generated in R 2.15.2 by xtable 1.7-0 package
% Wed Oct 31 09:19:16 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrr}
\hline
& D & p.value \\
\hline
1 & 0.46 & 0.00 \\
2 & 0.46 & 0.00 \\
\hline
\end{tabular}
\end{center}
\end{table}
然后查看print.xtable 和 xtable 包的手册,了解如何格式化数据框的名称等以在 LaTeX 输出中获得更好的输出。