R 使用数字列和整数列格式化标记表

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 |?”——:——:——————————————————————————

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 | 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|