我有一个这样的数据框:
> summary
variable value
1 var1 5.810390e-06
2 var2 5.018182e-06
3 var3 5.414286e-06
4 var4 3.000779e+02
5 var5 -2.105123e+01
6 var6 8.224229e-01
Run Code Online (Sandbox Code Playgroud)
我想用knitr/kable在word文档中打印它.因此我使用了以下功能:
knitr::kable(summary,
row.names = FALSE,
col.names = c("Variable", "Mean"))
Run Code Online (Sandbox Code Playgroud)
但结果并不令人满意:
变量4到6我没关系,但变量1到3真的不容易这样读取...有没有办法控制这种格式?
最通用的方法是自己进行格式化,并将字符变量的数据帧发送给kable.例如,这不会给出最好的显示,但它显示了如何分别处理前3行:
df <- data.frame(variable = paste0("var", 1:6),
value =c(5.810390e-06, 5.018182e-06, 5.414286e-06, 3.000779e+02, -2.105123e+01, 8.224229e-01))
formatted <- df
formatted$value[1:3] <- format(df$value[1:3], digits = 3)
formatted$value[4:6] <- format(df$value[4:6], digits = 3)
knitr::kable(formatted)
Run Code Online (Sandbox Code Playgroud)
这会产生以下输出:
您还可以使用as.character()和signif():
# using the data frame from the previous answer:
df <- data.frame(variable = paste0("var", 1:6),
value =c(5.810390e-06, 5.018182e-06, 5.414286e-06, 3.000779e+02,
-2.105123e+01, 8.224229e-01))
df %>% dplyr::mutate_if(is.numeric, funs(as.character(signif(., 3)))) %>%
kable(.)
Run Code Online (Sandbox Code Playgroud)
这使:
|variable |value |
|:--------|:--------|
|var1 |5.81e-06 |
|var2 |5.02e-06 |
|var3 |5.41e-06 |
|var4 |300 |
|var5 |-21.1 |
|var6 |0.822 |
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3639 次 |
| 最近记录: |