【问题标题】:Is there a way to set significant digit display in a flextable?有没有办法在柔性表中设置有效数字显示?
【发布时间】:2020-02-20 20:44:01
【问题描述】:

我正在尝试为 对象设置有效数字显示。

# Select data from a dataframe
ft <- flextable(data, col_keys = c(1,2,3,4)) 
# adjust digit display in columns 3 and 4 of flextable
ft <- colformat_num(ft, j = c(3,4), digits = 4)

但是,此 sn-p 中的 digits 参数将数字设置在小数点之后,而不是将数字四舍五入为 n 个有效数字。这是来自 Excel 的示例公式:

=ROUND(number,digits-(1+INT(LOG10(ABS(number)))))

这可以在flextable 命令中重现吗?感谢您的帮助!

【问题讨论】:

    标签: flextable r flextable


    【解决方案1】:

    您可以创建一个格式化函数并使用 set_formatter:

    library(flextable)
    
    round_and_format <- function(number) {
      rr <- round(number,digits-(1+as.integer(log10(abs(number)))))
      as.character(rr)
    }
    
    ft <- flextable(head(iris))
    ft <- set_formatter(ft, Sepal.Length = round_and_format, Sepal.Width = round_and_format)
    ft <- autofit(ft)
    print(ft)
    

    【讨论】:

      【解决方案2】:

      大卫的回答奏效了,但经过这些小修正。

      要使其正常工作,该函数需要在 log10 函数之前添加一个 abs,并且在数字后有一个 = 符号:

      round_and_format <- function(number) {
        rr <- round(number,digits=(1+as.integer(abs(log10(abs(number))))))
        as.character(rr)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-13
        • 1970-01-01
        • 1970-01-01
        • 2013-02-13
        相关资源
        最近更新 更多