gpt4 book ai didi

r - 在 candisc::cancor 输出上使用 xtable 函数

转载 作者:行者123 更新时间:2023-12-02 09:36:24 25 4
gpt4 key购买 nike

我想在 candisc::cancor 输出上使用 xtable 函数。但无法弄清楚。

library(xtable)
library(candisc)
data(Rohwer, package="heplots")
X <- as.matrix(Rohwer[,6:10]) # the PA tests
Y <- as.matrix(Rohwer[,3:5]) # the aptitude/ability variables
(cc <- cancor(X, Y, set.names=c("PA", "Ability")))
Canonical correlation analysis of:
5 PA variables: n, s, ns, na, ss
with 3 Ability variables: SAT, PPVT, Raven

CanR CanRSQ Eigen percent cum scree
1 0.6703 0.44934 0.81599 77.30 77.30 ******************************
2 0.3837 0.14719 0.17260 16.35 93.65 ******
3 0.2506 0.06282 0.06704 6.35 100.00 **

Test of H0: The canonical correlations in the
current row and all that follow are zero

CanR WilksL F df1 df2 p.value
1 0.67033 0.44011 3.8961 15 168.8 0.000006
2 0.38366 0.79923 1.8379 8 124.0 0.076076
3 0.25065 0.93718 1.4078 3 63.0 0.248814
xtable(cc)

Error in UseMethod("xtable") :
no applicable method for 'xtable' applied to an object of class "cancor"

最佳答案

如果你看看 methods(xtable) ,没有 cancor 对象的方法,但有 xtable.data.frame 我们可以希望可以使用,因为 cancor 的输出看起来像 data.frames

但是,cancor 不会返回这些值 - 请查看 str(cc)。它们是在 print 方法中计算的。查看 candisc:::print.cancor

因此,创建一个快速提取函数来生成 cancor 输出作为 data.frames

outfun <- function(X) { 
CanR = X$cancor
CanRSQ = CanR^2
Eigen = CanRSQ/(1 - CanRSQ)
percent = 100 * Eigen/sum(Eigen)
cum = cumsum(percent)
list(tab1 = data.frame(CanR, CanRSQ, Eigen, percent, cum) ,
tab2 = as.data.frame(candisc:::Wilks.cancor(X)))
}

运行辅助函数

(out <- outfun(cc))

# or run it like
out <- outfun(cancor(X, Y, set.names=c("PA", "Ability")))

然后可以使用 xtable.data.frame 生成 xtable 输出

xtable:::xtable.data.frame(out[[1]])

# % latex table generated in R 3.1.1 by xtable 1.7-3 package
# % Wed Sep 17 18:32:07 2014
# \begin{table}[ht]
# \centering
# \begin{tabular}{rrrrrr}
# \hline
# & CanR & CanRSQ & Eigen & percent & cum \\
# \hline
# 1 & 0.67 & 0.45 & 0.82 & 77.30 & 77.30 \\
# 2 & 0.38 & 0.15 & 0.17 & 16.35 & 93.65 \\
# 3 & 0.25 & 0.06 & 0.07 & 6.35 & 100.00 \\
# \hline
# \end{tabular}
# \end{table}

xtable:::xtable.data.frame(out[[2]])

您可以调整辅助函数以提取 header 等内容,然后将其作为参数传递给 xtable.data.frame

一个可以帮助您入门的快速答案

关于r - 在 candisc::cancor 输出上使用 xtable 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25730319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com