R中使用format()将数值四舍五入后转为科学计数法

Using format() in R to convert numeric value to scientific notation after rounding

我的整个代码的一小段是将给定的向量四舍五入到指定的小数位数。然后将四舍五入的值转换为标准符号,例如“1.2e-01”。

下面的四舍五入效果很好。

values <- c(0.1234, 0.5678)
dig <- 2
rounded_vals <- round(values, dig) %>% str_trim()

当我 运行 以下代码时,我希望两行的输出相同。

format(rounded_vals, scientific = TRUE)
format(c(0.12, 0.56), scientific = TRUE)

我实际得到的是:

> format(rounded_vals, scientific = TRUE)
[1] "0.12" "0.57"
> format(c(0.12, 0.56), scientific = TRUE)
[1] "1.2e-01" "5.6e-01"

为什么 format(rounded_vals, scientific = TRUE) return 没有相同的输出,我该如何调整代码来实现?

欢迎任何意见:)

编辑:我遗漏了一些导致问题的代码 - 似乎是 str_trim() 与字符有关。

我认为 rounded_vals 可能已存储为字符值。尝试使用 as.numeric() 将它们转换为数字,然后将其放入 format() 函数。