【问题标题】:Numbers after the comma do not appear when using formattable() in R在 R 中使用 formattable() 时,逗号后的数字不会出现
【发布时间】:2021-06-24 22:26:25
【问题描述】:

我正在使用 formattable 包来生成我的 data.frame 的表格视图。但是我注意到有些列不显示逗号后的数字(十进制)。

例如:格式表中的“v”、“p”和“t”列省略了逗号后面的字符(十进制)。为什么会这样?

aa2<-read.table(text="Ano   v   u   a   p   ur  h   e   t
2005    1782135.22  113711.81   98964.84    2207446.25  3876.68 7085.74 3265.89 59030602.87
2006    1719687.83  167937.4    97068.3 2218090.61  3936.55 6811.86 2952.21 59030602.87
2007    1755637.78  122799.6    94299.72    2229590.5   3978.23 6858.66 3171.66 59030602.87
2008    1779051.85  97385.73    101739.73   2225127.88  3996.84 6929.01 2254.58 59030602.87
2009    1805123.7   74061.79    109175.68   2215819.96  4126.57 6771.5  1406.21 59030602.87
2010    1716896.85  168013.92   108014.05   2210652.42  4210.9  7162.69 1535.68 59030602.87
2011    1736892.8   151980.31   113991.8    2200158.22  4259.77 7759.18 1442.06 59030602.87
2012    1757330.63  133273.24   125825.1    2185550.21  4419.45 8129.58 1958.48 59030602.87
2013    1639912.63  248584.77   140183.71   2171799.74  4531.06 8687.48 2777.32 59030602.87
2014    1657021.54  227375.14   180036.19   2136407.51  4631.85 8724.39 2287.94 59030602.87
2015    1720644.41  151089.44   190536.46   2138270.92  4733.71 8911.75 2298.34 59030602.87
2016    1662281.39  202916.33   210776.21   2124964.42  4803.06 8575.97 2165.52 59030602.87
2017    1716427.7   136156.44   230587.13   2117936.68  4809.71 8386.94 2170.25 59030602.87
2018    1638715.79  204483.2    255703.3    2101912.82  4931.96 8366.64 2349.4  59030602.87
", sep="", header = TRUE)

aa2

#Formatar a tabela
formattable(aa2, list(
  'v' = color_tile("#00cccc","#0066cc"),
  'u' = color_tile("#00cccc","#0066cc"),
  'a' = color_tile("#00cccc","#0066cc"),
  'p' = color_tile("#00cccc","#0066cc"),
  'ur' = color_tile("#00cccc","#0066cc"),
  'h' = color_tile("#00cccc","#0066cc"),
  'e'= color_tile("#00cccc","#0066cc")
  ))

【问题讨论】:

    标签: r formattable


    【解决方案1】:

    它可能是四舍五入的。我们可以通过应用commanumeric 列之上创建formattable 属性来避免

    library(dplyr)
    library(formattable)
    aa2 <- aa2  %>%
       mutate(across(v:t, ~ formattable::comma(., digits = 2, big.mark = "")))
    
    formattable::formattable(aa2, list(
      'v' = color_tile("#00cccc","#0066cc"),
      'u' = color_tile("#00cccc","#0066cc"),
      'a' = color_tile("#00cccc","#0066cc"),
      'p' = color_tile("#00cccc","#0066cc"),
      'ur' = color_tile("#00cccc","#0066cc"),
      'h' = color_tile("#00cccc","#0066cc"),
      'e'= color_tile("#00cccc","#0066cc")
    ))
    

    -输出

    【讨论】:

    • @wesleysc352 我没有收到你的问题。我只是通过修改列来更新原始对象aa2
    • 编辑:它工作的代码,但为什么 aa2 &lt;- aa2 %&gt;% 中的 aa2 会重复?
    • @wesleysc352 可以说如果你在没有分配&lt;- 的情况下执行aa2 %&gt;% mutate(across(v:t, ~ formattable::comma(., digits = 2, big.mark = ""))),它只会将输出打印到控制台并且不会更改原始对象。这就是我将其分配回该对象的原因。你可以说右值是数据(&lt;- 的右值),左值是地址或对象
    【解决方案2】:

    此设置由options 控制,它决定要显示的位数。如果将options(digits = n) 中的n 设置为较大的数字,则默认情况下所有数字都可见。

    library(formattable)
    
    options(digits = 10)
    
    formattable(aa2, list(
      'v' = color_tile("#00cccc","#0066cc"),
      'u' = color_tile("#00cccc","#0066cc"),
      'a' = color_tile("#00cccc","#0066cc"),
      'p' = color_tile("#00cccc","#0066cc"),
      'ur' = color_tile("#00cccc","#0066cc"),
      'h' = color_tile("#00cccc","#0066cc"),
      'e'= color_tile("#00cccc","#0066cc")
    ))
    

    默认值为 7,不允许显示所有数字。如果您进一步减少数字,您也会看到它对其他列的影响。

    options(digits = 4)
    
    formattable(aa2, list(
      'v' = color_tile("#00cccc","#0066cc"),
      'u' = color_tile("#00cccc","#0066cc"),
      'a' = color_tile("#00cccc","#0066cc"),
      'p' = color_tile("#00cccc","#0066cc"),
      'ur' = color_tile("#00cccc","#0066cc"),
      'h' = color_tile("#00cccc","#0066cc"),
      'e'= color_tile("#00cccc","#0066cc")
    ))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      • 2021-12-25
      相关资源
      最近更新 更多