Estou vendo uma peculiaridade na ctable()
função do pacote summarytools do R e estou tentando ver se estou esquecendo de algo aqui.
A vinheta de introdução do ctable afirma que "Os operadores de pipe do magrittr (%>%, %$%) e pipeR (%>>%) são totalmente suportados; o nativo |> introduzido no R 4.0 também é suportado."
Usar o pipe nativo funciona conforme o esperado para as funções freq()
e descr()
.
No entanto, estou tendo problemas com o pipe nativo para ctable()
. Se eu usar o pipe nativo, recebo um Error: object 'ObjectName' not found
where ObjectName é uma das variáveis na ctable()
função. Não funciona com o pipe magrittr regular. No entanto, ctable()
funciona se eu alternar para o pipe de exposição magrittr %$%
. Não encontrei nenhuma diferença se eu adicionar as especificações de argumento x= e y=.
Outra peculiaridade nessa bagunça é que ctable()
funciona com um pipe nativo SE eu reduzir o quadro de dados selecionando apenas as duas colunas que eu quero para o ctable()
. No entanto, eu tenho que remover os nomes das colunas do ctable()
nesse caso, senão eu recebo um erro; além disso, os nomes das colunas que imprimem nos resultados parecem horríveis e não são úteis.
Estou esquecendo de algo aqui? Não deveria ctable()
funcionar da mesma forma freq()
ou descr()
ao usar o pipe nativo ou o pipe magrittr regular?
Para aqueles curiosos sobre o motivo pelo qual meus exemplos têm o as.factor()
, até onde eu sei, ctable()
ainda tem o problema do PrettyNum ao usar valores numéricos -- veja o Github de Dominic Comtois e esta postagem do SO .
Exemplos reproduzíveis
# setup
library(summarytools)
library(magrittr)
library(dplyr)
data("mtcars")
# these work just fine as expected
freq(mtcars$cyl)
mtcars |> freq(cyl)
mtcars |> descr(qsec)
mtcars |> subset(select=c(qsec, hp)) |> descr()
# ctable not working with the native pipe or regular magrittr pipe
mtcars |>
mutate(cyl = as.factor(cyl), gear = as.factor(gear)) |>
# mutate(cyl = as.factor(cyl), gear = as.factor(gear)) %>%
ctable(cyl, gear)
# ctable works with the exposion pipe
mtcars |>
mutate(cyl = as.factor(cyl), gear = as.factor(gear)) %$%
ctable(cyl, gear)
# ctable works with native pipe if also selecting to only the columns for ctable, but output looks off
mtcars |>
mutate(cyl = as.factor(cyl), gear = as.factor(gear)) |>
select(cyl, gear) |>
# ctable(cyl, gear) # gives error
ctable() # no error