Skip to content

Commit

Permalink
version 0.1.7
Browse files Browse the repository at this point in the history
  • Loading branch information
MaximeWack authored and cran-robot committed Feb 3, 2020
1 parent 0491553 commit d78b87b
Show file tree
Hide file tree
Showing 20 changed files with 1,067 additions and 830 deletions.
14 changes: 8 additions & 6 deletions DESCRIPTION
@@ -1,7 +1,8 @@
Package: desctable
Title: Produce Descriptive and Comparative Tables Easily
Version: 0.1.6
Authors@R: person("Maxime", "Wack", email = "maximewack@free.fr", role = c("aut", "cre"))
Version: 0.1.7
Authors@R: c(person("Maxime", "Wack", email = "maximewack@free.fr", role = c("aut", "cre")),
person("Adrien", "Boukobza", email = "hadrien_b@hotmail.fr", role = c("aut")))
Description: Easily create descriptive and comparative tables.
It makes use and integrates directly with the tidyverse family of packages, and pipes.
Tables are produced as data frames/lists of data frames for easy manipulation after creation,
Expand All @@ -14,11 +15,12 @@ URL: https://github.com/maximewack/desctable
BugReports: https://github.com/maximewack/desctable/issues
Imports: dplyr, purrr, DT, htmltools, pander
Suggests: knitr, rmarkdown, survival
RoxygenNote: 6.1.1
RoxygenNote: 7.0.2
VignetteBuilder: knitr
NeedsCompilation: no
Packaged: 2019-04-01 16:39:44 UTC; maxx
Author: Maxime Wack [aut, cre]
Packaged: 2020-02-03 15:25:06 UTC; maxx
Author: Maxime Wack [aut, cre],
Adrien Boukobza [aut]
Maintainer: Maxime Wack <maximewack@free.fr>
Repository: CRAN
Date/Publication: 2019-04-01 17:10:02 UTC
Date/Publication: 2020-02-03 16:20:06 UTC
38 changes: 19 additions & 19 deletions MD5
@@ -1,25 +1,25 @@
c4f097954b024e26426c81e288147245 *DESCRIPTION
9a76e1e34710b6f9d5a0dc04bd59c78f *DESCRIPTION
5846dfa3dbdc5089ed50336d6e148379 *NAMESPACE
b20796906fd650db93f3461b307d5432 *NEWS
1caa760c04aec1ee8b0444aef63800f0 *R/build.R
c0420cf208c16c6ac0a14b6c3e5e4526 *R/convenience_functions.R
9f5dcc557ef57edefc2230b5f079539f *NEWS
1bc3e03922ba75e485d8d697117ab1f3 *R/build.R
0d4d8da582786005fba45c19c27efa56 *R/convenience_functions.R
71541db0aff44e2366fe360fb19a7887 *R/imports.R
27f51bfb22199a11d2f7a88234a0ca72 *R/output.R
bcf14d07544382b92df5fadad7e3ce4a *R/stats.R
0ffc42e30492ffd17684534e15a5b788 *R/tests.R
769e5ff9d88bf70aea350b3ca7e2f081 *R/utils.R
b7f86694d68059fdd731ff8753908cb2 *README.md
2fe8e0df51734310aa7e8296c62bc826 *build/vignette.rds
d87485dc6350d0f54e117932c94bb496 *inst/doc/desctable.R
e9d921dfce2c46d1e1d1daa796a9722d *inst/doc/desctable.Rmd
298d5fb612eba4628a6425e0cf5420ce *inst/doc/desctable.html
9d40db2d08237433d4e5d89ae362d4e8 *R/output.R
c92a496043b3a401a9fba980f110611b *R/stats.R
dba8eab358af4c51f69d275cadf932b3 *R/tests.R
17f32d7393b0cdbc78b07b494522ea0f *R/utils.R
9c3cff90fa9e4e6176071977cb803329 *README.md
8133137a811642517f460200247d9418 *build/vignette.rds
672a9811eb2a15adb9ea4cf0460ea1f1 *inst/doc/desctable.R
e0b562d8b4e740ff90d43bc2c7eee785 *inst/doc/desctable.Rmd
0ae89bb4752dfee42d6500a631c99f8a *inst/doc/desctable.html
b49cec69255a1ae1e8136d2f3f2227e7 *man/ANOVA.Rd
d4a54186837b6e4e2189555f18b4a2d3 *man/IQR.Rd
9218be6f33b29fc27161fa23e0759c6a *man/as.data.frame.desctable.Rd
b1d6a108efaf7b01f68db85bacd9404e *man/chisq.test.Rd
4fc8c2dfbbd5cc09965a06fcacab3d33 *man/datatable.Rd
036531ea3c7314438bef2e0a440cd385 *man/desctable.Rd
659bb1ea16bdf30cedfdb98dd60eb158 *man/fisher.test.Rd
9e57a349a598b0ea69cd0435fe266696 *man/chisq.test.Rd
3e53afba852810e12e005e2eee90c1d2 *man/datatable.Rd
a37bbb870e0c6ae97b2ff124d43dd044 *man/desctable.Rd
53c18e1cda1cbe5ec72b047d3061d7a2 *man/fisher.test.Rd
6729e6694029379ea0554fe25fcbcc85 *man/flatten_desctable.Rd
c69fa1cbd4ebb21506bc646b9cbd751d *man/head_dataframe.Rd
2372639c8cd421e5e53f185c3df6665a *man/head_datatable.Rd
Expand All @@ -29,7 +29,7 @@ a04990103a187adb13d5804946d5601a *man/headerList.Rd
bcfe94edac95d2d1224ea9448cb93efd *man/insert.Rd
8013c9e430c0b9269e016deb16b88c50 *man/is.normal.Rd
d9f268cbd028e89b4161e8138af48533 *man/no.test.Rd
884d147e145f46de7f32ba931b70d343 *man/pander.desctable.Rd
f293c8f4e33c6e2344745ba04de0b2d0 *man/pander.desctable.Rd
d396b19fada193e60fc07363cba9e35b *man/parse_formula.Rd
b90bacee363bff1cf0a589f370ebaf04 *man/percent.Rd
9eb1de4debd3f716635f4a00d4d8ad45 *man/print.desctable.Rd
Expand All @@ -44,4 +44,4 @@ cc0bd87bf84349f1df7e865ac5b14d0d *man/subTable.Rd
8e935cf097b35b4dc433a5ecc637ff9a *man/testify.Rd
ba0a66907a66a7cd7d459dfd55f82900 *man/tests_auto.Rd
ad5dc1a6a9d709963a8b9f03547473f5 *man/varColumn.Rd
e9d921dfce2c46d1e1d1daa796a9722d *vignettes/desctable.Rmd
e0b562d8b4e740ff90d43bc2c7eee785 *vignettes/desctable.Rmd
4 changes: 4 additions & 0 deletions NEWS
@@ -1,3 +1,7 @@
Version 0.1.7

- Vignette and README with RStudio style guidelines

Version 0.1.6

- Correct way to re-export `group_by` and `%>%`
Expand Down
30 changes: 15 additions & 15 deletions R/build.R
Expand Up @@ -7,7 +7,7 @@ statColumn <- function(stat, data)
{
data %>%
lapply(statify, stat) %>%
unlist
unlist()
}


Expand Down Expand Up @@ -47,12 +47,12 @@ varColumn <- function(data, labels = NULL)
base_names[base_names %in% names(labels)] <- labels[base_names[base_names %in% names(labels)]]

# Insert levels for factors after the variable name
if (any(data %>% lapply(is.factor) %>% unlist))
if (any(data %>% lapply(is.factor) %>% unlist()))
{
data %>%
lapply(is.factor) %>%
unlist %>%
which -> factors_idx
unlist() %>%
which() -> factors_idx

base_names[factors_idx] <- paste0("**", base_names[factors_idx], "**")
factor_levels <-
Expand Down Expand Up @@ -122,10 +122,10 @@ varColumn <- function(data, labels = NULL)
#' @export
#' @examples
#' iris %>%
#' desctable
#' desctable()
#'
#' # Does the same as stats_auto here
#' iris %>%
#' iris %>%
#' desctable(stats = list("N" = length,
#' "%/Mean" = is.factor ~ percent | (is.normal ~ mean),
#' "sd" = is.normal ~ sd,
Expand All @@ -145,7 +145,7 @@ varColumn <- function(data, labels = NULL)
#' # With nested grouping, on arbitrary variables
#' mtcars %>%
#' group_by(vs, cyl) %>%
#' desctable
#' desctable()
#'
#' # With grouping on a condition, and choice of tests
#' iris %>%
Expand Down Expand Up @@ -177,7 +177,7 @@ desctable.grouped_df <- function(data, stats = stats_auto, tests = tests_auto, l
data <- dplyr::ungroup(data)

# Build the complete table recursively, assign "desctable" class
c(Variables = list(varColumn(data[!names(data) %in% (grps %>% lapply(as.character) %>% unlist)], labels)),
c(Variables = list(varColumn(data[!names(data) %in% (grps %>% lapply(as.character) %>% unlist())], labels)),
subTable(data, stats, tests, grps)) %>%
`class<-`("desctable")
}
Expand All @@ -195,9 +195,9 @@ subNames <- function(grp, df)
{
paste0(as.character(grp),
": ",
eval(grp, df) %>% factor %>% levels,
eval(grp, df) %>% factor() %>% levels(),
" (n=",
summary(eval(grp, df) %>% factor %>% stats::na.omit(), maxsum = Inf),
summary(eval(grp, df) %>% factor() %>% stats::na.omit(), maxsum = Inf),
")")
}

Expand All @@ -213,12 +213,12 @@ testColumn <- function(df, tests, grp)
group <- eval(grp, df)

df <- df %>%
dplyr::select(- !!(grp))
dplyr::select(-!!(grp))

if (is.function(tests))
{
ftests <- df %>%
lapply(tests, group %>% factor)
lapply(tests, group %>% factor())
tests <- ftests
} else if (!is.null(tests$.auto))
{
Expand Down Expand Up @@ -255,11 +255,11 @@ subTable <- function(df, stats, tests, grps)
# Final group, make tests
if (length(grps) == 1)
{
group <- eval(grps[[1]], df) %>% factor
group <- eval(grps[[1]], df) %>% factor()

# Create the subtable stats
df %>%
dplyr::select(- !!(grps[[1]])) %>%
dplyr::select(-!!(grps[[1]])) %>%
by(group, statTable, stats) %>%
# Name the subtables with info about group and group size
stats::setNames(subNames(grps[[1]], df)) -> stats
Expand All @@ -275,7 +275,7 @@ subTable <- function(df, stats, tests, grps)

# Go through the next grouping levels and build the subtables
df %>%
dplyr::select(- !!(grps[[1]])) %>%
dplyr::select(-!!(grps[[1]])) %>%
by(group, subTable, stats, tests, grps[-1]) %>%
# Name the subtables with info about group and group size
stats::setNames(subNames(grps[[1]], df))
Expand Down
4 changes: 2 additions & 2 deletions R/convenience_functions.R
Expand Up @@ -7,7 +7,7 @@
#' @return A nlevels(x) + 1 length vector of percentages
percent <- function(x)
{
if (x %>% is.factor)
if (x %>% is.factor())
c(NA, summary(x, maxsum = Inf) / length(x)) * 100
else
NA
Expand Down Expand Up @@ -36,7 +36,7 @@ IQR <- function(x)
#' @return A boolean
is.normal <- function(x)
{
if (! x %>% is.numeric)
if (! x %>% is.numeric())
F
else if (length(x %>% stats::na.omit()) >= 30)
tryCatch(stats::shapiro.test(x)$p.value > .1,
Expand Down
12 changes: 6 additions & 6 deletions R/output.R
Expand Up @@ -6,7 +6,7 @@
#' @export
print.desctable <- function(x, ...)
{
print(x %>% as.data.frame)
print(x %>% as.data.frame())
}


Expand All @@ -24,7 +24,7 @@ as.data.frame.desctable <- function(x, ...)
header <- x %>% header("dataframe")

x %>%
flatten_desctable %>%
flatten_desctable() %>%
data.frame(check.names = F, ...) %>%
stats::setNames(header)
}
Expand Down Expand Up @@ -129,7 +129,7 @@ datatable.default <- function(data,
fillContainer = getOption("DT.fillContainer", NULL),
autoHideNavigation = getOption("DT.autoHideNavigation", NULL),
selection = c("multiple", "single", "none"),
extensions = list(),
extensions = list(),
plugins = NULL, ...)
{
DT::datatable(data, options = options, class = class, callback = callback, caption = caption, filter = filter, escape = escape, style = style, width = width, height = height, elementId = elementId, fillContainer = fillContainer, autoHideNavigation = autoHideNavigation, selection = selection, extensions = extensions, plugins = plugins, ...)
Expand Down Expand Up @@ -160,7 +160,7 @@ datatable.desctable <- function(data,
autoHideNavigation = getOption("DT.autoHideNavigation", NULL),
selection = c("multiple", "single", "none"),
extensions = c("FixedHeader", "FixedColumns", "Buttons"),
plugins = NULL,
plugins = NULL,
rownames = F,
digits = 2, ...)
{
Expand All @@ -170,7 +170,7 @@ datatable.desctable <- function(data,
header <- data %>% header("datatable")

data %>%
flatten_desctable -> flat
flatten_desctable() -> flat

if (!is.null(digits))
flat <- flat %>% lapply(prettyNum, digits = digits) %>% lapply(gsub, pattern = "^NA$", replacement = "")
Expand All @@ -180,7 +180,7 @@ datatable.desctable <- function(data,
DT::datatable(container = header,
options = options,
extensions = extensions,
escape = escape,
escape = escape,
class = class,
callback = callback,
caption = caption,
Expand Down
4 changes: 2 additions & 2 deletions R/stats.R
Expand Up @@ -128,7 +128,7 @@ stats_auto <- function(data)
data %>%
Filter(f = is.numeric) %>%
lapply(is.normal) %>%
unlist -> shapiro
unlist() -> shapiro

if (length(shapiro) == 0)
{
Expand All @@ -141,7 +141,7 @@ stats_auto <- function(data)
any(!shapiro) -> nonnormal
}

any(data %>% lapply(is.factor) %>% unlist) -> fact
any(data %>% lapply(is.factor) %>% unlist()) -> fact

if (fact & normal & !nonnormal)
stats_normal(data)
Expand Down
8 changes: 4 additions & 4 deletions R/tests.R
Expand Up @@ -9,7 +9,7 @@
#' @return The results for the function applied on the vector, compatible with the format of the result table
testify <- function(x, f, group)
{
fun <- f %>% deparse %>% Reduce(f = paste0) %>% substring(2)
fun <- f %>% deparse() %>% Reduce(f = paste0) %>% substring(2)
f <- eval(f[[2]])
p <- tryCatch(f(x ~ group)$p.value[1],
error = function(e) {message(e);NaN})
Expand All @@ -36,11 +36,11 @@ testify <- function(x, f, group)
#' @export
tests_auto <- function(var, grp)
{
grp <- grp %>% factor
grp <- grp %>% factor()
if (nlevels(grp) < 2)
~no.test
else if (var %>% is.factor)
if (tryCatch(fisher.test(var ~ grp)$p.value %>% is.numeric, error = function(e) F))
else if (var %>% is.factor())
if (tryCatch(fisher.test(var ~ grp)$p.value %>% is.numeric(), error = function(e) F))
~fisher.test
else
~chisq.test
Expand Down

0 comments on commit d78b87b

Please sign in to comment.