R语言结合HTML编码时如何避免大数字显示e+10类科学计数法
R 中 sprintf 输出整数避免科学计数法的方案
报错原因
修改逻辑错误:sprintf()第一个参数为固定格式模板,误将%1.0f写在第一个参数位后,原有HTML模板被挤入待格式化参数队列,程序尝试将HTML字符串按数值格式解析,触发类型不匹配报错。
正确修改代码
只需要替换模板中对应Popularity字段的占位符即可:把原来的%g(自动选择科学计数法/短格式输出)替换为整数占位符%d,如果字段存在小数值可以替换为%.0f(保留0位小数的浮点数格式),两种写法都会强制输出完整整数,不会触发科学计数法。
修正后的代码如下:
labels <- sprintf( "<strong>%s</strong><br/>%d People / 2020", shp_poly1_simplified$UNIT_NAME, shp_poly1_simplified$Popularity ) %>% lapply(htmltools::HTML)
注:原代码末尾多余的</sup>标签没有对应的开标签,属于冗余代码,已在上述示例中移除,不影响功能。
补充可选方案
如果希望整个R会话中所有数值输出都默认不使用科学计数法,可以在脚本开头运行全局设置:
options(scipen = 999)
该设置会大幅提高触发科学计数法的阈值,日常百万、千万级的数值都会以完整整数形式输出。
内容的提问来源于stack exchange,提问作者Nevin
相关产品推荐
相关产品推荐

