在 Pander 中突出显示最小行值

Highlighting mininimum row value in Pander

我正在尝试使用 Pander 包在 RMarkdown 文档中显示数据框。

我想突出显示每行值中的最小值。这是我尝试过的:

df <- replicate(4, rnorm(5)) 
df <- as.data.frame(df)
df$min <- apply(df, 1, min)
emphasize.strong.cells(which(df == df$min, arr.ind = T))
pander(df[1:4])

执行此操作时出现错误:

Error in check.highlight.parameters(emphasize.strong.cells, nrow(t), ncol(t)) : 
  Too high number passed for column indexes that should be kept below 6

我可以毫不费力地打印出整个 table(带有 min 列),或者我可以不加强调地打印出部分 table,但这两种方法都不理想。我想要突出显示,但我不想包含 'min' 列。

我想是我在 pander 命令中遗漏了一些突出显示的单元格导致了错误。

有办法解决这个问题吗?或者更好的方法?

谢谢。

子问题:如果我想突出显示前几行中的最小值和接下来几行中的最大值怎么办?这在单个 table 中可能吗?

而不是 which 查找,有可能在错误的行中匹配行最小值,您可以使用简单的序列 (1:N) 轻松构造这些数组索引并调用 which.min在每一行上,例如 apply:

> df <- replicate(4, rnorm(5))
> df <- as.data.frame(df)
> emphasize.strong.cells(cbind(1:nrow(df), apply(df, 1, which.min)))
> pander(df)

----------------------------------------------
    V1          V2          V3          V4    
----------- ----------- ----------- ----------
  0.6802      0.1409    **-0.7992**   0.1997  

  0.6797    **-0.2212**    1.016      0.6874  

   2.031     -0.009855    0.3881    **-1.275**

   1.376      0.2619    **-2.337**   -0.1066  

**-0.4541**    1.135      -0.1566     0.2912  
----------------------------------------------

关于你的下一个问题:你当然可以在单个 table 中做到这一点,例如 rbind 两个矩阵与上面描述的 which.minwhich.max 类似地创建.