虽然很基本,但我在任何地方都找不到答案:如何在小标题中禁用科学记数法,而让小标题显示小数?
我有一个简单的 tibble,由lm() %>% broom::tidy().
library(tidyverse)
## I used dput() to get this:
tidy_lm_output <- structure(list(term = c("(Intercept)", "mood", "sleep"), estimate = c(-0.00000000000000028697849703988,
-0.0746522106739049, 0.835867664974019), std.error = c(0.0319620048196539,
0.0464197056030362, 0.0464197056030362), statistic = c(-0.00000000000000897873893265334,
-1.60820086435494, 18.006742053085), p.value = c(0.999999999999993,
0.108628280589954, 9.41480010964234e-53)), row.names = c(NA,
-3L), class = c("tbl_df", "tbl", "data.frame"))
> tidy_lm_output
## # A tibble: 3 x 5
## term estimate std.error statistic p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) -2.87e-16 0.0320 -8.98e-15 10.00e- 1
## 2 mood -7.47e- 2 0.0464 -1.61e+ 0 1.09e- 1
## 3 sleep 8.36e- 1 0.0464 1.80e+ 1 9.41e-53
Run Code Online (Sandbox Code Playgroud)
奇怪的是,只有“std.error”列以小数显示,但所有其他列都以科学记数法显示。
我想让所有列都以小数显示信息,同时仍然是一个小标题。
options(scipen=999)不起作用。format(scientific = FALSE)也没有用。您可以使用 控制打印的有效数字的数量options(pillar.sigfig = 5)。
tidy_lm_output
# A tibble: 3 x 5
term estimate std.error statistic p.value
<chr> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) -2.8698e-16 0.031962 -8.9787e-15 1.0000e+ 0
2 mood -7.4652e- 2 0.046420 -1.6082e+ 0 1.0863e- 1
3 sleep 8.3587e- 1 0.046420 1.8007e+ 1 9.4148e-53
Run Code Online (Sandbox Code Playgroud)
有关如何格式化小标题的更多信息,请参阅 help(format.tbl)
但是,如果您只想对这些数字进行四舍五入,则可以执行以下操作:
tidy_lm_output %>%
mutate_if(is.numeric, round, 5)
# A tibble: 3 x 5
term estimate std.error statistic p.value
<chr> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) 0 0.0320 0 1
2 mood -0.0746 0.0464 -1.61 0.109
3 sleep 0.836 0.0464 18.0 0
Run Code Online (Sandbox Code Playgroud)