您显示的错误是因为输出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
你需要xtable
为类编写一个方法"htest"
(这是由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}
然后查看xtableprint.xtable
包的手册,了解如何格式化数据框的名称等以在 LaTeX 输出中获得更好的输出。