r - 如何在 R 数据框中制作漂亮的“自动”数字格式?
问题描述
R 或 R 工作室是否有任何选项可以“自动”表示要显示或导出的数字。就像我在一列中有非常小的数字,比如 0.000023,所以它应该显示或导出为“2.3e-05”,但另一个数字(如 10.23)应该“按原样”显示,而不会将其更改为“指数”格式。>
rf_test
RfC RfD_ing RfD_per RfD_derm
2 0.00002 NA 2.0e-03 NA
3 0.10000 NA 1.1e+01 NA
4 0.00500 1.43e-03 1.0e+00 0.100000
5 0.03000 NA 4.0e+00 NA
6 0.00007 NA 2.0e-02 0.000070
7 1.00000 2.86e-05 5.0e-03 0.000060
8 0.00005 1.43e-05 1.4e-01 0.001840
....
像这样导出时,导出文件看起来比在 RStudio 控制台中更讨厌:
write.table(rf_test, "rf_test.dat", sep = "\t", row.names = FALSE, na = "NA")
带有表格的文件
有这种格式的建议吗?
解决方案
您是否尝试过该format()
功能(或者,如果您想更严格地控制数字的显示方式,请使用该formatC()
功能)
您可以在 if/else 语句中使用整数除法运算符编写自己的函数,%/%
以决定在更改格式之前数字应该有多少小数。像这样的东西:
test_func <- function(x){
res <- 0
res <- ifelse(x %/% 0.0001 > 0, format(x, scientific = FALSE, trim = TRUE), format(x, scientific = TRUE))
return(res)
}
结果:
print(rf_test %>% mutate(RfD_per_new = test_func(RfD_per)), n = 26)
# A tibble: 26 x 5
RfC RfD_ing RfD_per RfD_derm RfD_per_new
<dbl> <dbl> <dbl> <dbl> <chr>
1 0.00002 NA 0.002 NA 0.00200
2 0.1 NA 11 NA 11.00000
3 0.005 0.00143 1 0.1 1.00000
4 0.03 NA 4 NA 4.00000
5 0.000070 NA 0.02 0.000070 0.02000
6 1 0.0000286 0.005 0.00006 0.00500
7 0.00005 0.0000143 0.14 0.00184 0.14000
8 0.6 NA 0.3 NA 0.30000
9 0.00002 0.00000571 0.02 0.016 0.02000
10 0.00005 NA 0.02 0.0054 0.02000
11 0.00002 0.0402 0.019 0.012 0.01900
12 0.0009 0.3 0.3 0.06 0.30000
13 0.04 NA NA NA NA
14 0.00003 0.000300 0.000300 0.000123 0.00030
15 0.00008 NA 0.005 NA 0.00500
16 0.012 NA 0.005 0.0019 0.00500
17 0.02 NA 0.005 0.0009 0.00500
18 0.00002 0.0000571 0.0005 0.00001 0.00050
19 0.02 NA 0.6 NA 0.60000
20 0.0004 0.000395 0.0004 0.000008 0.00040
21 0.0005 0.000143 0.07 0.0049 0.07000
22 0.0002 NA NA NA NA
23 0.1 NA 0.0025 NA 0.00250
24 0.000300 0.0000857 0.000300 0.000021 0.00030
25 0.00023 NA 0.000070 NA 7.0e-05
26 0.0005 0.00352 0.0035 0.000525 0.00350
根据您的喜好更改整数除法运算符后的数字以调整截止点。
这行得通吗?:)
推荐阅读
- linked-list - 排序单链表和排序双链表的运行时复杂度
- python - 这些 Python 类方法输出的意义何在?
- javascript - 尝试通过遍历数组失败来使用 jQuery 重新显示页面中的隐藏元素
- php - 将现有产品变体与新生成的变体相关联
- ruby-on-rails - 从 Rails 后端 React 前端访问嵌套数据
- javascript - 发布 Mongoose 复杂模式
- maxifs - excel Max IF函数
- android - 迁移到 Jetpack/AndroidX 后出现 InflateException
- c++ - 在 Turboc++ 中导入 BMP 文件问题:BMP 文件未在输出屏幕中正确显示
- c - musl-gcc:对 __memcpy_chk 的未定义引用