-1

这是我得到的:

> panderOptions('big.mark', ',')
> foo <- rbind(cancer, cancer); for(i in 1:8) foo <- rbind(foo, foo)
> pander(table(foo$ph.karno, foo$pat.karno))

-----------------------------------------------------
 &nbsp;    30    40   50   60   70   80    90    100 
--------- ----- ---- ---- ---- ---- ----- ----- -----
 **50**     0   512  512  512  512   512    0     0  

 **60**     0   512  512  2560 4608 1536    0     0  

 **70**   1,024  0   1024 4608 3072 3072  1536  1536 

 **80**     0    0    0   6144 6656 6656  10240 4608 

 **90**     0    0    0   1536 5120 10752 12288 7680 

 **100**    0    0    0    0   512  3584  6656  4096 
-----------------------------------------------------

我希望逗号分隔符也显示在其他列中。我怎么做?

4

1 回答 1

3

我得到的最佳结果(t 是您的table通话结果):

> pander(format(t,big.mark=','))

----------------------------------------------------------
 &nbsp;    30    40   50    60    70     80     90    100 
--------- ----- ---- ----- ----- ----- ------ ------ -----
 **50**     0   512   512   512   512   512     0      0  

 **60**     0   512   512  2,560 4,608 1,536    0      0  

 **70**   1,024  0   1,024 4,608 3,072 3,072  1,536  1,536

 **80**     0    0     0   6,144 6,656 6,656  10,240 4,608

 **90**     0    0     0   1,536 5,120 10,752 12,288 7,680

 **100**    0    0     0     0    512  3,584  6,656  4,096
----------------------------------------------------------

我认为这是一个错误,pander.table.return但我没有深入挖掘以找到根本原因。

sapply编辑:我找到了原因,函数的第 283 行在每个 col 上都有一个 for 循环调用,但是一旦处理了第一列,当我们从format.

然后后续调用format无法格式化数字,因为它们已被强制转换为 char。

pander.table.return给出这种行为的代码:

for (j in 1:ncol(t)) {
  temp.t[, j] <- sapply(temp.t[, j], format, trim = TRUE, 
                        digits = digits[j], decimal.mark = decimal.mark, 
                        big.mark = big.mark)
}
于 2016-01-05T15:38:05.277 回答