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

在candisc::cancor输出上使用xtable函数,r,knitr,sweave,xtable,rnw,R,Knitr,Sweave,Xtable,Rnw,我想在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.na

我想在
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"
库(xtable)
图书馆(candisc)
数据(Roower,package=“heplots”)

X如果你看
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)))
        }
您可以调整helper函数来提取标题,然后将标题作为参数传递给
xtable.data.frame


一个快速的答案可能会让你开始

非常感谢你的帮助和提供非常有用的答案。非常感谢。感谢您在
as.data.frame(candisc:::Wilks.cancor(cc))
中做了一些更改,因为
cc
未定义。干杯,再次忘记在发布之前清除我的工作区;)
(out <- outfun(cc))

# or run it like
out <- outfun(cancor(X, Y, set.names=c("PA", "Ability")))
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]])