我正在尝试使用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
我可以毫不费力地打印出整个表格(使用min列),或者我可以不加重地打印出部分表格,但这些都不是理想的。我想要突出显示,但我不希望包含“最小”和“最小化”。列。
我想我将一些突出显示的单元格从pander命令中删除会导致错误。
有解决方法吗?或者更好的方法呢?
感谢。
子问题:如果我想突出显示前几行中的最小值和接下来几行中的最大值,该怎么办?这可能在一张桌子上吗?
答案 0 :(得分:1)
而不是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
----------------------------------------------
关于您的下一个问题:您当然可以在一个表格中执行此操作,例如rbind
两个矩阵的创建方式与上述which.min
和which.max
类似。