【问题标题】:Formatting a character column as numeric with less than and greater than symbols将字符列格式化为带有小于和大于符号的数字
【发布时间】:2019-06-28 09:35:01
【问题描述】:

我有一组数据,其中包含实验室提交的微生物对数减少计算。有时只能说明大于或小于某个数字的值。此处的示例数据:

test.df <- tribble(
~x, ~y, ~z,
#--|--|----
"pa", "lab1", "-3.52",
"pa", "lab2", ">5.0",
"pa", "lab3", "<-1.567")

是否有任何例程可以让我以正确的对齐方式对其进行格式化,即,

Organism     Laboratory     LogReduction
--------     ----------     ------------
pa           lab1            -3.52
pa           lab2           > 5.0
pa           lab3           <-1.567

即,小数点对齐,所有大于或小于符号也对齐?

基本上,我试图得到这样的数据框,我可以用 kable 打印它

test.df <- tribble(
~x, ~y, ~z,
#--|--|----
"pa", "lab1", " -3.52 ",
"pa", "lab2", "> 5.0  ",
"pa", "lab3", "<-1.567")

我尝试了一些 sprintf 修改,但看不到任何符合要求的内容。

【问题讨论】:

    标签: r r-markdown


    【解决方案1】:

    我还没有看到一个函数来做到这一点,但你应该可以写一个。例如:

    prefix <- gsub("[^><]*", "", test.df$z)
    prefix[nchar(prefix) < 1] <- " "
    suffix <- gsub("[<>]", "", test.df$z)
    suffix <- format(as.numeric(suffix))
    test.df$z <- paste0(prefix, suffix)
    

    此时,test.df$z 已经有了你想要的格式,但是当你把它放到 Markdown 表中时,前导的空格会被删除,事情不会排成一行。要解决此问题,您可以尝试用数字空格字符替换空格字符。您还需要将“-”替换为减号而不是连字符。

    这在 HTML 中适用于我:

    test.df$z <- gsub(" ", "&numsp;", test.df$z)
    test.df$z <- gsub("-", "&minus;", test.df$z)
    kable(test.df)
    

    它产生这个表:

    如果您使用 HTML 以外的其他输出格式,则空格和连字符替换必须不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 2015-01-12
      • 2018-04-30
      • 1970-01-01
      相关资源
      最近更新 更多