2015-06-20 80 views
2

我正在嘗試使用knitr :: kable生成降價表,其中舍入的數字因行而異。例如,假設我有以下data.frame:R - 由行改變由knitr生產的數字舍入:: kable

example.df <- data.frame(a = c(0.1234, 2000), b = c(0.5678, 3000)) 

我想創建以下降價表,其中第一行舍入爲兩位數字,在第二行被四捨五入爲一個整數。

| a| b| 
|----:|----:| 
| 0.12| 0.57| 
| 2000| 3000| 

相反,我似乎只能格式化整個列。

library(knitr) 
kable(example.df, digits = c(2, 0)) 

其結果如下表降價:

|  a| b| 
|-------:|----:| 
| 0.12| 1| 
| 2000.00| 3000| 

如何產生R A降價表具有數字逐行格式有什麼建議?

+2

,你可以把它傳遞給kable – user20650

+3

'knitr :: kable(格式(例如之前格式化數據框的行。 df,digits = 2,drop0trailing = TRUE))' – rawr

回答

2

正如@ user20650指出的,一種解決方案是在將數據傳遞給knitr之前,將數據幀中的條目格式轉換爲R。它可以做這樣的:

example.df <- rbind(formatC(as.numeric(example.df[1,]),format="f",digits=2), 
        formatC(as.numeric(example.df[2,]),format="d")) 
colnames(example.df) <- c("a","b") 

這給出了以下的輸出:

> kable(example.df, align="r") 

| a| b| 
|----:|----:| 
| 0.12| 0.57| 
| 2000| 3000|