R 使用数字列和整数列格式化标记表
knitr::kable()如何忽略设置整型列的格式以及设置所有其他数值列的格式 例如: knitr::kable(x=as.data.frame(rbind(c(1L,21.211),c(2L,31.233)),format.args=list(“digits”=2,“nsmall”=2,“big.mark”=”,“decimal.mark”=”,“scientific”=FALSE)) 它返回:R 使用数字列和整数列格式化标记表,r,markdown,knitr,R,Markdown,Knitr,knitr::kable()如何忽略设置整型列的格式以及设置所有其他数值列的格式 例如: knitr::kable(x=as.data.frame(rbind(c(1L,21.211),c(2L,31.233)),format.args=list(“digits”=2,“nsmall”=2,“big.mark”=”,“decimal.mark”=”,“scientific”=FALSE)) 它返回: [1]“|V1 | V2 |?”——:——:——————————————————————————
[1]“|V1 | V2 |?”——:——:——————————————————————————————————————————————————————————————————————————————————————————————————
我知道这样的输出是什么:
[1]“|V1 | V2 |”|------------:|“| 1 | 21,21 |”| 2 | 31,23 |”
谢谢knitr::kable
始终对所有数字列应用相同的格式,因此您唯一的选择是在调用字符列之前将其转换为字符列,正如J_F的参考建议
我怀疑它是否能完全自动化。您开始使用的数据帧只有数值
列;通过c()
将整数
值转换为数值
。(您可以通过以不同的方式构造数据帧来避免这种情况。)假设您有某种方法来构造一个向量,指示您希望以何种方式格式化哪些列,您可以自动执行如下操作:
df <- as.data.frame(rbind(c(1L, 21.211), c(2L, 31.233)))
intcolumn <- c(TRUE, FALSE) # This is hard to automate
for (i in seq_len(ncol(df))) {
if (intcolumn[i])
df[[i]] <- format(df[[i]])
else
df[[i]] <- format(df[[i]], digits = 2, nsmall = 2, big.mark = ".",
decimal.mark = ",", scientific = FALSE)
}
knitr::kable(df, align = "r") # right align as for numeric column
你看到这个了吗?谢谢你的回复。但我正在寻找一种更“自动化”的方法。。也许有可能在上面提到的文章中写一些逻辑来处理这个问题。
| V1| V2|
|--:|-----:|
| 1| 21,21|
| 2| 31,23|