r - 如何四舍五入r中预测函数的输出
问题描述
a = today+1; b = today+7
new <- data.frame(t_date = as.Date(a:b ,origin = "2020-01-20"))
predict_date <- as.Date(a:b,origin="2020-01-20")
predict_date = c(as.character.Date(predict_date))
Final <- cbind(predict_date,predict.lm(fit,new,interval = "confidence"))
knitr::kable(Final,caption = "This is the predictions for the world ")
我希望输出为整数,有人请帮我解决这个问题!
解决方案
要控制输出打印中的位数,请将digits
参数设置为kable()
。
要控制实际数字的精度,用户round()
.
这是一个可重现的例子。
library(dplyr)
library(knitr)
mdl <- lm(dist ~ speed, data = cars)
explanatory_data <- data.frame(
speed = seq(0, 100, 10)
)
predictions <- explanatory_data %>%
mutate(
dist = predict(mdl, explanatory_data)
)
默认情况下,kable()
打印与getOption("digits")
.
predictions %>%
kable()
| speed| dist|
|-----:|---------:|
| 0| -17.57909|
| 10| 21.74499|
| 20| 61.06908|
| 30| 100.39317|
| 40| 139.71726|
| 50| 179.04134|
| 60| 218.36543|
| 70| 257.68952|
| 80| 297.01361|
| 90| 336.33769|
| 100| 375.66178|
用digits
参数改变它。
predictions %>%
kable(digits = 2)
| speed| dist|
|-----:|------:|
| 0| -17.58|
| 10| 21.74|
| 20| 61.07|
| 30| 100.39|
| 40| 139.72|
| 50| 179.04|
| 60| 218.37|
| 70| 257.69|
| 80| 297.01|
| 90| 336.34|
| 100| 375.66|
这不会改变基础数字。您可以使用更改精度round()
(但这通常是一个坏主意,因为任何进一步的计算都会不太准确)。
predictions %>%
mutate(rounded_dist = round(dist, 2))
speed dist rounded_dist
1 0 -17.57909 -17.58
2 10 21.74499 21.74
3 20 61.06908 61.07
4 30 100.39317 100.39
5 40 139.71726 139.72
6 50 179.04134 179.04
7 60 218.36543 218.37
8 70 257.68952 257.69
9 80 297.01361 297.01
10 90 336.33769 336.34
11 100 375.66178 375.66
推荐阅读
- python - 调试时的打印和索引问题
- python - 如何将列表中相等的连续数字替换为nan?
- python - AttributeError:“客户端”对象没有属性“命令”第 45 行
- node.js - loopback3:将用户关联到不同的数据库
- python - 在 discord.py 中更改语音频道名称时遇到问题
- python - Django 序列化器是单独序列化反向关系吗?
- reactjs - babel-import-plugin 无法解决关于使用整个 antd 包的警告。Antd 错误或 babel 导入插件使用不正确?
- mysql - 初始化到每个查询的多个连接
- python - 使用 python api 在 EKS 集群上托管的 Airflow 中运行 k8s 命令
- python - 用于复制粘贴 Excel 文件中的单元格范围的 Python 脚本