R:如何阻止“看门人”中的装饰功能更改次要字符列?

R:如何阻止“看门人”中的装饰功能更改次要字符列?,r,dplyr,janitor,R,Dplyr,Janitor,下面是我正在经历的一个例子 library(tidyverse) library(janitor) x <- data_frame(c1=c('a','a','b','b'), c2=c('a','b','c','d'), c3=runif(4,0,10), c4=runif(4,10,20), c5=runif(4,20,100)) x %>% a

下面是我正在经历的一个例子

library(tidyverse)
library(janitor)

x <- data_frame(c1=c('a','a','b','b'),
                c2=c('a','b','c','d'),
                c3=runif(4,0,10),
                c4=runif(4,10,20),
                c5=runif(4,20,100))

x %>%
  adorn_totals(c('col')) %>%
  adorn_percentages('row') %>%
  adorn_pct_formatting() %>%
  adorn_ns('front')
正如您所看到的,列
c2
只是另一个字符列,因此不应该受到
装饰
函数的影响,但当我从
装饰pct_格式化
装饰
时,它会以一种意外的方式对该列进行变异

是否有人知道如何防止这种情况,同时保持我下面相同的一般方法;这意味着我继续使用
看门人
装饰功能

我知道并能够编写代码来手动计算N和%s并将其粘贴到每个特定列中,但我正在寻找一种方法,如果可能的话,可以使用此处提供的函数来实现


谢谢。

我找不到一种机制来防止门卫装饰字符栏

此外,在看门人回购协议中,还讨论了字符柱的装饰

我的解决方案是通过使用stringr::strsplit拆分字符串来处理adorn函数之后的字符列

library(stringr)

df %>% 
mutate(character_col = sapply(strsplit(character_col, "\\s\\(" ), [, 1)) 

我希望这对遇到此问题的其他人有用。

这一问题现在已在《看门人2.0.0》中修复。字符列由
装饰()保留原样:


您还可以使用
参数控制要修饰的列。

您可以尝试查看源代码以了解发生了什么。否则,在package GitHub页面上打开一个问题,您可以尝试
left\u join
将结果相互关联。。。
library(stringr)

df %>% 
mutate(character_col = sapply(strsplit(character_col, "\\s\\(" ), [, 1)) 
x %>%
    adorn_totals(c('col')) %>%
    adorn_percentages('row') %>%
    adorn_pct_formatting() %>%
    adorn_ns('front')

 c1 c2               c3               c4               c5             Total
  a  a 1.294509  (1.5%) 10.60898 (12.5%) 72.87039 (86.0%) 84.77388 (100.0%)
  a  b 6.557902 (11.2%) 19.27799 (32.9%) 32.73041 (55.9%) 58.56630 (100.0%)
  b  c 5.336008  (7.8%) 17.68432 (25.9%) 45.20563 (66.3%) 68.22596 (100.0%)
  b  d 4.984140  (8.6%) 16.18887 (27.8%) 37.05183 (63.6%) 58.22485 (100.0%)