4

我有一个要显示的表,其中混合了百分比、整数和浮点值,每个值都位于表的不同行中。

我想在 R 标记或 Rnw 文件中创建格式化输出,以很好地显示我的表格。

如果我使用 xtable 和 digits 命令,我可以按列执行此操作。

我已经在 LaTeX 输出中使用 print 的 add.to.row 功能进行了调查,但是,我找不到将格式应用于我的数字的 LaTeX 标签,它们都需要大括号围绕各个数字才能格式生效,我无法实现。

<<results=tex>>=
  library(xtable)

  ### some random data
  X<-data.frame();
  for (i in 1:2) {
    r<-sample(1:1000,4);
    X<-rbind(X,r);
  }
  X<-rbind(X,(X[1,]/(X[1,]+X[2,])))
  colnames(X)<-c("Cat A","Cat B","Cat C","Cat D")
  rownames(X)<-c("Passed","Failed","Percent Passed")

  ###Atempts to format the rows  
  formTable<-xtable(X)
  print(formTable)

  ###This works to format column
  Y=t(X)
  Y[,"Percent Passed"]=Y[,"Percent Passed"]*100;
  formatedTab<-xtable(Y)
  digits(formatedTab)<-c(0,0,0,2)
  print(formatedTab)
 @

如果我可以转置第二张表的输出,我会很高兴……但这似乎不起作用。

我想要这个的一个特别原因是我有很长的行描述和很短的列描述,所以更容易拥有漂亮的紧凑对齐列。

4

1 回答 1

3

调用前格式化数据框怎么样xtable

library(xtable)
set.seed(10)
X <- as.data.frame(matrix(sample(1:1000, 8), nrow = 2), stringsAsFactors = FALSE)
X[3, ] <- (X[1,]/(X[1,]+X[2,])) * 100
X
#         V1        V2        V3        V4
#1 508.00000 427.00000  85.00000 273.00000
#2 307.00000 692.00000 225.00000 271.00000
#3  62.33129  38.15907  27.41935  50.18382
X <- as.data.frame(lapply(X, sprintf, fmt = c("%.0f", "%.0f", "%.6f")))
colnames(X)<-c("Cat A","Cat B","Cat C","Cat D")
rownames(X)<-c("Passed","Failed","Percent Passed")
formTable<-xtable(X)
formTable
#% latex table generated in R 3.2.0 by xtable 1.7-4 package
#% Tue May  5 11:37:51 2015
#\begin{table}[ht]
#\centering
#\begin{tabular}{rllll}
#  \hline
# & Cat A & Cat B & Cat C & Cat D \\ 
#  \hline
#Passed & 508 & 427 & 85 & 273 \\ 
#  Failed & 307 & 692 & 225 & 271 \\ 
#  Percent Passed & 62.331288 & 38.159071 & 27.419355 & 50.183824 \\ 
#   \hline
#\end{tabular}
#\end{table}
于 2015-05-05T10:38:26.013 回答