-
Notifications
You must be signed in to change notification settings - Fork 70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conflict between DT::datatable and haven_labelled #398
Comments
Thanks for the report @bjcarothers. I'm not sure how much Here's an almost minimal reprex: df_labelled <-
dplyr::tibble(a = c("one", "two"), b = c(1, 2)) |>
labelled::set_value_labels(b = c("First" = 1, "Second" = 2))
jsonlite::toJSON(df_labelled)
#> Error: C stack usage 7954232 is too close to the limit Since the label attributes aren't useful to what's shown in the datatable, I'd recommend casting labelled columns to characters or factors before creating the datatable: library(dplyr)
df_labelled <-
dplyr::tibble(a = c("one", "two"), b = c(1, 2)) |>
labelled::set_value_labels(b = c("First" = 1, "Second" = 2))
df_labelled |>
mutate(across(where(labelled::is.labelled), labelled::to_factor)) |>
DT::datatable() |
It turns out that simply trying to jsonify a labelled vector enters the infinite recursion loop. I opened an issue with jsonlite: jeroen/jsonlite#424 labelled::labelled(1:3) |> jsonlite::toJSON()
#> Error: C stack usage 7955752 is too close to the limit |
Stumbled across this issue and found that labelled::labelled(1:3) |> jsonify::to_json()
[1,2,3] (if it's any help) |
There seems to be a conflict between
DT::datatable
andhaven_labelled
data types that might be caused by recent versions ofhtmltools
.This works fine:
This does not:
Yielding the following error:
Running the following versions:
C stack errors are generally the result of deep recursive functions, which a 2x2 table is not. I've used
DT
to display dataframes withhaven_labelled
data types in the past, so this is a recent bug. I posted the issue at https://stackoverflow.com/questions/77026027/conflict-between-dtdatatable-and-haven-labelled and it did not replicate withhtmltools_0.5.3
but does replicate withhtmltools_0.5.6
. Ritchie Sacramento's theory is that "it's an issue withhtmltools
when it tries to print the DT object - it gets stuck in a loop checking for tags and trying to add tags..."The text was updated successfully, but these errors were encountered: