2015-12-03 30 views
1

我正嘗試使用Pander程序包在RMarkdown文檔中顯示數據框。在Pander中突出顯示最小行值

我想突出顯示每行值的最小值。這是我曾嘗試:

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

代替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.minwhich.max描述。