CODE:
# some data
dat <-
data.frame(
log2fc = c(0.28, 10.82, 8.54, 5.64, 8.79, 6.46),
pvalue = c(0.00e+00, 2.29e-30, 7.02e-30, 4.14e-29, 1.86e-28, 1.78e-27)
)
# observe in markdown format
knitr::kable(dat, format="markdown")
输出:
| log2fc| pvalue|
|------:|------:|
| 0.28| 0|
| 10.82| 0|
| 8.54| 0|
| 5.64| 0|
| 8.79| 0|
| 6.46| 0|
问题:
输出问题是,它将最后一列pvalue
渲染为零。但我希望保留与我在数据帧中看到的格式相同的格式。我怎么做 ?我尝试了各种线程的几种解决方案,但似乎没有任何效果。有人能指出我正确的方向吗?
请不要建议我将pvalue列转换为字符向量。这是一个快速而肮脏的解决方案,但我不想这样做,因为:
答案 0 :(得分:5)
kable()
调用基本R函数round()
,除非将数字设置为非常大的值,否则会将这些小值截断为零。但你可以这样做,例如。
knitr::kable(dat, format = "markdown", digits = 32)
给出了
| log2fc| pvalue|
|------:|--------:|
| 0.28| 0.00e+00|
| 10.82| 2.29e-30|
| 8.54| 7.02e-30|
| 5.64| 4.14e-29|
| 8.79| 1.86e-28|
| 6.46| 1.78e-27|
如果您确实希望在某些列中进行常规舍入,则可以为数字指定多个值,例如
knitr::kable(dat, format = "markdown", digits = c(1, 32))
| log2fc| pvalue|
|------:|--------:|
| 0.3| 0.00e+00|
| 10.8| 2.29e-30|
| 8.5| 7.02e-30|
| 5.6| 4.14e-29|
| 8.8| 1.86e-28|
| 6.5| 1.78e-27|