Skip to content

dataset: Create Data Frames that are Easier to Exchange and Reuse #681

Description

@antaldaniel

Date accepted: 2025-08-27

Submitting Author Name: Daniel Antal
Submitting Author Github Handle: @antaldaniel
Repository: https://github.com/dataobservatory-eu/dataset
Version submitted: 0.3.4002
Submission type: Standard
Editor: @maurolepore
Reviewers: @maurolepore

Archive: TBD
Version accepted: TBD
Language: en


  • Paste the full DESCRIPTION file inside a code block below:
Package: dataset
Title: Create Data Frames that are Easier to Exchange and Reuse
Version: 0.3.4002
Date: 2024-12-26
DOI: 10.32614/CRAN.package.dataset
Language: en-GB
Authors@R: 
    c(person(given = "Daniel", family = "Antal", 
           email = "daniel.antal@dataobservatory.eu", 
           role = c("aut", "cre"),
           comment = c(ORCID = "0000-0001-7513-6760")
           ), 
      person(given = "Marcelo", family =  "Perlin", 
             role = c("rev"), 
             comment = c(ORCID = "0000-0002-9839-4268")
             )
      )
Maintainer: Daniel Antal <daniel.antal@dataobservatory.eu>
Description: The aim of the 'dataset' package is to make tidy datasets easier to release, 
    exchange and reuse. It organizes and formats data frame 'R' objects into well-referenced, 
    well-described, interoperable datasets into release and reuse ready form.
License: GPL (>= 3)
Encoding: UTF-8
URL: https://dataset.dataobservatory.eu/
BugReports: https://github.com/dataobservatory-eu/dataset/issues/
Roxygen: list(markdown = TRUE)
LazyData: true
Imports: 
    assertthat,
    cli,
    haven,
    ISOcodes,
    labelled,
    methods,
    pillar,
    RefManageR,
    rlang,
    tibble,
    utils,
    vctrs (>= 0.5.2)
RoxygenNote: 7.3.2
Suggests: 
    knitr,
    rdflib,
    rmarkdown,
    spelling,
    testthat (>= 3.0.0)
Config/testthat/edition: 3
Depends: 
    R (>= 3.5)
VignetteBuilder: knitr

Scope

  • Please indicate which category or categories from our package fit policies this package falls under: (Please check an appropriate box below. If you are unsure, we suggest you make a pre-submission inquiry.):

    • data retrieval
    • data extraction
    • data munging
    • data deposition
      • data validation and testing
    • workflow automation
    • version control
    • citation management and bibliometrics
    • scientific software wrappers
    • field and lab reproducibility tools
    • database software bindings
    • geospatial data
    • text analysis
  • Explain how and why the package falls under these categories (briefly, 1-2 sentences):

The package works with various semantic interoperability standards, therefore it allows the users to retrieve RDF annotated, rich and platform-independent data and reconstruct it as an R data.frame with rich metadata attributes, or to release interoperable, RDF annotated datasets on linked open data platforms from native R objects.

  • Who is the target audience and what are scientific applications of this package?

Production-side statisticans. Scientists who want to update their sources from various data repositories and exchanges. Scientists and research data managers who want to release new scientific or professional datasets that follow modern interoperability standards.

The package aimst to complement the rdflib and the datapsice package.

Technical checks

Confirm each of the following by checking the box.

This package:

Publication options

  • Do you intend for this package to go on CRAN?

  • Do you intend for this package to go on Bioconductor?

  • Do you wish to submit an Applications Article about your package to Methods in Ecology and Evolution? If so:

Code of conduct

Activity

  1. ropensci-review-bot commented on Jan 21, 2025

    @ropensci-review-bot
    Collaborator

    Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type @ropensci-review-bot help for help.

  2. ropensci-review-bot commented on Jan 21, 2025

    @ropensci-review-bot
  3. maelle commented on Jan 21, 2025

    @maelle
    Member

    @antaldaniel I am so sorry, you didn't use the right template... because we broke the right template last time we edited it! I put it back in shape, thanks for helping us catch it. You can find it by opening a new issue (it'll be at the top of the list) or use it from here https://github.com/ropensci/software-review/blob/main/.github/ISSUE_TEMPLATE/A-submit-software-for-review.md

    So sorry, thanks for your patience.

  4. ropensci-review-bot commented on Jan 21, 2025

    @ropensci-review-bot
    Collaborator

    Checks for dataset (v0.3.4002)

    git hash: 7bf85ac7

    • ✔️ Package is already on CRAN.
    • ✔️ has a 'codemeta.json' file.
    • ✔️ has a 'contributing' file.
    • ✔️ uses 'roxygen2'.
    • ✔️ 'DESCRIPTION' has a URL field.
    • ✔️ 'DESCRIPTION' has a BugReports field.
    • ✔️ Package has at least one HTML vignette
    • ✔️ All functions have examples.
    • ✔️ Package has continuous integration checks.
    • ✖️ Package coverage failed
    • ✖️ R CMD check process failed with message: 'Build process failed'.
    • 👀 Function names are duplicated in other packages

    Important: All failing checks above must be addressed prior to proceeding

    (Checks marked with 👀 may be optionally addressed.)

    Package License: GPL (>= 3)


    1. Package Dependencies

    Details of Package Dependency Usage (click to open)

    The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.

    type package ncalls
    internal base 281
    internal dataset 215
    internal graphics 11
    internal stats 2
    imports assertthat 29
    imports utils 8
    imports labelled 5
    imports rlang 2
    imports cli 1
    imports haven 1
    imports tibble 1
    imports ISOcodes NA
    imports methods NA
    imports pillar NA
    imports RefManageR NA
    imports vctrs NA
    suggests knitr NA
    suggests rdflib NA
    suggests rmarkdown NA
    suggests spelling NA
    suggests testthat NA
    linking_to NA NA

    Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.

    base

    ifelse (41), as.character (40), is.null (39), list (20), c (14), vapply (8), lapply (7), names (7), data.frame (6), logical (6), paste (6), paste0 (6), character (5), inherits (5), which (5), contributors (4), date (4), seq_along (4), substr (4), Sys.time (4), for (3), format (3), invisible (3), length (3), t (3), with (3), all (2), attr (2), class (2), drop (2), gsub (2), labels (2), nrow (2), args (1), as.data.frame (1), as.Date (1), as.POSIXct (1), cbind (1), do.call (1), double (1), if (1), nchar (1), ncol (1), rbind (1), Sys.Date (1), tolower (1), vector (1)

    dataset

    get_bibentry (26), creator (11), dataset_title (11), subject (10), publisher (7), rights (7), get_creator (6), identifier (6), description (5), language (5), new_Subject (5), provenance (5), dataset_df (4), get_publisher (4), get_type (4), agent (3), convert_column (3), n_triple (3), publication_year (3), var_definition (3), var_namespace (3), var_unit (3), as_dataset_df (2), as_dublincore (2), datacite (2), default_provenance (2), definition_attribute (2), geolocation (2), get_author (2), get_person_iri (2), idcol_find (2), is_person (2), is.dataset_df (2), n_triples (2), namespace_attribute (2), new_my_tibble (2), prov_author (2), unit_attribute (2), as_character (1), as_character.haven_labelled_defined (1), as_datacite (1), as_numeric (1), as_numeric.haven_labelled_defined (1), as.character.haven_labelled_defined (1), create_iri (1), dataset_to_triples (1), defined (1), describe (1), dublincore (1), dublincore_to_triples (1), fix_contributor (1), fix_publisher (1), get_definition_attribute (1), get_namespace_attribute (1), get_unit_attribute (1), id_to_column (1), is_dataset_df (1), is_doi (1), is.datacite (1), is.datacite.datacite (1), is.defined (1), is.dublincore (1), is.dublincore.dublincore (1), is.subject (1), label_attribute (1), names.dataset_df (1), new_datacite (1), new_datetime_defined (1), new_dublincore (1), new_labelled_defined (1), print.dataset_df (1), set_default_bibentry (1), set_definition_attribute (1), set_namespace_attribute (1), set_unit_attribute (1), set_var_labels (1), subject_create (1), summary.dataset_df (1), summary.haven_labelled_defined (1), tbl_sum.dataset_df (1), var_definition.default (1), var_label.dataset_df (1), var_label.defined (1), var_namespace.default (1)

    assertthat

    assert_that (29)

    graphics

    title (11)

    utils

    person (5), bibentry (2), citation (1)

    labelled

    var_label (4), to_labelled (1)

    rlang

    caller_env (1), env_is_user_facing (1)

    stats

    df (1), family (1)

    cli

    cat_line (1)

    haven

    labelled (1)

    tibble

    new_tibble (1)

    NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.


    2. Statistical Properties

    This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.

    Details of statistical properties (click to open)

    The package has:

    • code in R (100% in 29 files) and
    • 1 authors
    • 5 vignettes
    • 1 internal data file
    • 12 imported packages
    • 89 exported functions (median 5 lines of code)
    • 153 non-exported functions in R (median 8 lines of code)

    Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages
    The following terminology is used:

    • loc = "Lines of Code"
    • fn = "function"
    • exp/not_exp = exported / not exported

    All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function

    The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.

    measure value percentile noteworthy
    files_R 29 88.1
    files_vignettes 5 95.4
    files_tests 29 97.1
    loc_R 1731 79.0
    loc_vignettes 521 77.3
    loc_tests 717 77.6
    num_vignettes 5 96.4 TRUE
    data_size_total 2480 62.3
    data_size_median 2480 69.0
    n_fns_r 242 91.0
    n_fns_r_exported 89 94.0
    n_fns_r_not_exported 153 89.0
    n_fns_per_file_r 5 71.9
    num_params_per_fn 2 8.2
    loc_per_fn_r 6 13.0
    loc_per_fn_r_exp 5 8.5
    loc_per_fn_r_not_exp 8 22.9
    rel_whitespace_R 25 85.1
    rel_whitespace_vignettes 37 81.2
    rel_whitespace_tests 23 79.5
    doclines_per_fn_exp 52 64.9
    doclines_per_fn_not_exp 0 0.0 TRUE
    fn_call_network_size 155 84.7

    2a. Network visualisation

    Click to see the interactive network visualisation of calls between objects in package


    3. goodpractice and other checks

    Details of goodpractice checks (click to open)

    3a. Continuous Integration Badges

    rhub.yaml


    3b. goodpractice results

    R CMD check with rcmdcheck

    R CMD check generated the following error:

    1. Error in proc$get_built_file() : Build process failed

    R CMD check generated the following check_fails:

    1. no_description_date
    2. no_import_package_as_a_whole

    Test coverage with covr

    ERROR: Test Coverage Failed

    Cyclocomplexity with cyclocomp

    Error : Build failed, unknown error, standard output:

    • checking for file ‘dataset/DESCRIPTION’ ... OK
    • preparing ‘dataset’:
    • checking DESCRIPTION meta-information ... OK
    • installing the package to build vignettes
    • creating vignettes ... ERROR
      --- re-building ‘bibentry.Rmd’ using rmarkdown
      --- finished re-building ‘bibentry.Rmd’

    --- re-building ‘dataset_df.Rmd’ using rmarkdown
    --- finished re-building ‘dataset_df.Rmd’

    --- re-building ‘defined.Rmd’ using rmarkdown
    --- finished re-building ‘defined.Rmd’

    --- re-building ‘new_requirements.Rmd’ using rmarkdown
    --- finished re-building ‘new_requirements.Rmd’

    --- re-building ‘rdf.Rmd’ using rmarkdown

    Quitting from lines 106-108 [jsonld] (rdf.Rmd)
    Error: processing vignette 'rdf.Rmd' failed with diagnostics:
    please install the jsonld package to use this functionality.
    --- failed re-building ‘rdf.Rmd’

    SUMMARY: processing the following file failed:
    ‘rdf.Rmd’

    Error: Vignette re-building failed.
    Execution halted

    Static code analyses with lintr

    lintr found no issues with this package!


    4. Other Checks

    Details of other checks (click to open)

    ✖️ The following 10 function names are duplicated in other packages:

      • as_character from metan, radiant.data, retroharmonize, sjlabelled
      • as_numeric from descstat, metan, qdapRegex, radiant.data, retroharmonize, sjlabelled, zenplots
      • describe from AzureVision, Bolstad2, describer, dlookr, explore, Hmisc, iBreakDown, ingredients, lambda.r, MSbox, onewaytests, prettyR, psych, psych, psyntur, questionr, radiant.data, RCPA3, Rlab, scan, scorecard, sylly, tidycomm
      • description from dataMaid, dataPreparation, dataReporter, dcmodify, memisc, metaboData, PerseusR, ritis, rmutil, rsyncrosim, stream, synchronicity, timeSeries, tis, validate
      • get_bibentry from eurostat
      • identifier from Ramble
      • is.defined from nonmemica
      • language from sylly, wakefield
      • provenance from provenance
      • subject from DGM, emayili, gmailr, sendgridr


    Package Versions

    package version
    pkgstats 0.2.0.48
    pkgcheck 0.1.2.77


    Editor-in-Chief Instructions:

    Processing may not proceed until the items marked with ✖️ have been resolved.

  5. antaldaniel commented on Jan 21, 2025

    @antaldaniel
    Author

    @maelle let me know if this works now :)

  6. maelle commented on Jan 21, 2025

    @maelle
    Member

    Yes, thank you!

  7. maelle commented on Jan 21, 2025

    @maelle
    Member

    @ropensci-review-bot assign @maelle as editor

  8. ropensci-review-bot commented on Jan 21, 2025

    @ropensci-review-bot
    Collaborator

    Assigned! @maelle is now the editor

  9. maelle commented on Jan 21, 2025

    @maelle
    Member

    Thanks again for your submission!

    Editor checks:

    • Documentation: The package has sufficient documentation available online (README, pkgdown docs) to allow for an assessment of functionality and scope without installing the package. In particular,
      • Is the case for the package well made?
      • Is the reference index page clear (grouped by topic if necessary)?
      • Are vignettes readable, sufficiently detailed and not just perfunctory?
    • Fit: The package meets criteria for fit and overlap.
    • Installation instructions: Are installation instructions clear enough for human users?
    • Tests: If the package has some interactivity / HTTP / plot production etc. are the tests using state-of-the-art tooling?
    • Contributing information: Is the documentation for contribution clear enough e.g. tokens for tests, playgrounds?
    • License: The package has a CRAN or OSI accepted license.
    • Project management: Are the issue and PR trackers in a good shape, e.g. are there outstanding bugs, is it clear when feature requests are meant to be tackled?

    Editor comments


    Documentation

    My main comment before I can proceed to looking for reviewers is that the case of the package could be made better.

    On the one hand, it'd be interesting to read how dataset compares to other approaches to the same "problem", such as (if I follow correctly)

    On the other hand, how would an user take advantage of dataset?
    To me, it is not clear yet from reading the docs.
    Questions I wonder about:

    • As a data publisher, I create the dataset object, and then, how does it help me document it? How does it help me publish it on a repository?
    • When you mention standard statistical libraries in the README, could you name some?
    • As a data consumer, how do I create a dataset object (do I get it from an R package? shared in another way)? How can I easily use the information on units when exploring the data, when plotting it?

    In short, could you exemplify "release" and "re-use" in a vignette or more, as use cases, potentially using as roles the type of users you mention in the submission under "target audience".

    For instance https://wbdataset.dataobservatory.eu/ is a good example, but it is mentioned in a vignette.
    More concrete information like wbdataset should make it to the README to make it clearer what dataset is about (and then be expanded in vignettes).

    A tiny comment: I find "reuse" harder to parse than "re-use" but that might be a personal preference.

    Installation instructions

    I'd recommend documenting the two methods of installation (CRAN and GitHub) in distinct chunks so readers could copy-paste the entire code chunk of interest.

    Instead of devtools you could recommend using pak.

    install.packages("pak")
    pak::pak("dataobservatory-eu/dataset")

    Default git branch

    You might want to rename the master branch to main as some people can be offended by the word "master", see https://www.tidyverse.org/blog/2021/10/renaming-default-branch/ that includes links to context, and practical advice on renaming the default branch.

    Contributing guide

    The contributing guide does not seem customized.
    It mentions a possible "src" folder which is not present.

    Since you are looking for co-developers, and mentioned one of the articles could be relevant to potential contributors, I'd recommend having some text related to design and wishes for feedback in the contributing guide.

    The contributing guide mentions "AppVeyor" which is not used any more as far as I can tell.

    Continuous integration

    • If AppVeyor is not used any more, please remove the related contributing file.

    • The code coverage workflow seems not to be working: https://github.com/dataobservatory-eu/dataset/actions/workflows/test-coverage.yaml I'd recommend using the latest workflow file from r-lib/actions, by copy-pasting it or by running usethis::use_github_action("test-coverage").

    • The pkgdown website is not up to date, for instance on it the test coverage badge is not broken whereas it is in the README. Please add a workflow to continuously deploy it, for instance by running usethis::use_github_action("pkgdown").

    • If you no longer whish to use the R-CMD-check workflow because you rely on the R-hub ones, please remove the old workflow file.

    • The latest commits all have red crosses as status, which shows the continuous integration files need a bit of cleaning and tweaking. 🙂

    Project management

    From the open issues, which ones are meant to be tackled soon?
    One of them has the "First CRAN release" milestone, which is outdated.

    Code style

    I'd recommend running styler (on R scripts including tests) to make spacing more consistent.

    For instance in https://github.com/dataobservatory-eu/dataset/blob/7bf85ac7abe9477d02b429b4d335179d94993a77/R/agent.R#L56C1-L57C55 the space before return_type is surprising.
    I remember being inconsistent with spaces myself years ago and not noticing, (un)fortunately I was converted. 😅

    Code

    The code could be simplified so that reviewers might more easily follow the logic.

    is_person <- function(p) ifelse (inherits(p, "person"), TRUE, FALSE) in https://github.com/dataobservatory-eu/dataset/blob/7bf85ac7abe9477d02b429b4d335179d94993a77/R/as_dublincore.R#L11
    could be is_person <- function(p) inherits(p, "person") (thanks lintr for catching this).
    That pattern comes up several times in the codebase (the relevant linter is "redundant_ifelse_linter").

    Code like

    https://github.com/dataobservatory-eu/dataset/blob/7bf85ac7abe9477d02b429b4d335179d94993a77/R/agent.R#L4-L20

    and

    https://github.com/dataobservatory-eu/dataset/blob/7bf85ac7abe9477d02b429b4d335179d94993a77/R/agent.R#L66

    (and other similar pipelines) reminds me of Jenny Bryan's advice in her talk Code smells and feels

    If your conditions deal with class, it's time to get object-oriented. In CS jargon, use polymorphisms.

    So instead of the complex logic, you'd define methods.

    In some files like R/xsd_convert.R and R/dataset_title.R, you use class(something) == or class(something) %in% instead of code built on the more correct inherits().
    Using "proper functions for handling class & type" is another tip in the aforementioned talk. 😸

    Since dataset imports rlang, you could use the %||% operator from rlang.
    For instance https://github.com/dataobservatory-eu/dataset/blob/7bf85ac7abe9477d02b429b4d335179d94993a77/R/agent.R#L24

    creators   <- ifelse(is.null(dataset_bibentry$author), ":tba", dataset_bibentry$author)

    would become

    creators   <- dataset_bibentry$author %||% ":tba"

    There are many other occurrences of the ifelse(is.null( pattern (and variants with different spacing) that could get the same treatment.

    In the R/agent.R file, functions like get_creator() are defined twice, why?

    Example dataset

    The iris dataset is very well-known, but it is also infamous because of its eugenics links.
    Since having a good example dataset is very important, would you consider replacing it with another one, like maybe the palmerpenguins one, even if it comes at the cost of adding a (possibly optional) dependency?

    Tests

    Should the line https://github.com/dataobservatory-eu/dataset/blob/7bf85ac7abe9477d02b429b4d335179d94993a77/tests/testthat/test-agent.R#L9 be removed as it is not used in the test?

    I don't understand why the iris object needs to be duplicated in lines like https://github.com/dataobservatory-eu/dataset/blob/7bf85ac7abe9477d02b429b4d335179d94993a77/tests/testthat/test-creator.R#L23

    expect_true(is.dataset_df might become a custom expectation and/or rely on expect_s3_class() instead. Same comment for expect_true(is.subject.

    https://github.com/dataobservatory-eu/dataset/blob/7bf85ac7abe9477d02b429b4d335179d94993a77/tests/testthat/test-datacite.R#L18

    should be

    expect_type(as_datacite(iris_dataset, "list"), "list")

    What is https://github.com/dataobservatory-eu/dataset/blob/master/tests/testthat/test-dataset_prov.bak?

    When using expect_error() as in https://github.com/dataobservatory-eu/dataset/blob/7bf85ac7abe9477d02b429b4d335179d94993a77/tests/testthat/test-dataset_title.R#L3 maybe add a pattern for the error message, just in case another error happens?


    Thank you! Happy to discuss any of the items.

  10. maelle commented on Jan 21, 2025

    @maelle
    Member

    @ropensci-review-bot check package

  11. ropensci-review-bot commented on Jan 21, 2025

    @ropensci-review-bot
    Collaborator

    Thanks, about to send the query.

  12. 92 remaining items

  13. ropensci-review-bot commented on Aug 27, 2025

    @ropensci-review-bot
    Collaborator

    Checks for dataset (v0.4.0)

    git hash: b26562a8

    • ✔️ Package is already on CRAN.
    • ✔️ has a 'codemeta.json' file.
    • ✔️ has a 'contributing' file.
    • ✔️ uses 'roxygen2'.
    • ✔️ 'DESCRIPTION' has a URL field.
    • ✔️ 'DESCRIPTION' has a BugReports field.
    • ✔️ Package has at least one HTML vignette
    • ✔️ All functions have examples.
    • ✔️ Package has continuous integration checks.
    • ✔️ Package coverage is 87.9%.
    • ✔️ R CMD check found no errors.
    • ✔️ R CMD check found no warnings.
    • 👀 Some goodpractice linters failed.
    • 👀 Function names are duplicated in other packages

    (Checks marked with 👀 may be optionally addressed.)

    Package License: GPL (>= 3)


    1. Package Dependencies

    Details of Package Dependency Usage (click to open)

    The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.

    type package ncalls
    internal base 443
    internal dataset 345
    internal graphics 10
    internal stats 5
    imports assertthat 30
    imports labelled 10
    imports utils 9
    imports vctrs 5
    imports haven 1
    imports tibble 1
    imports ISOcodes NA
    imports pillar NA
    suggests dplyr NA
    suggests jsonld NA
    suggests knitr NA
    suggests rdflib NA
    suggests rmarkdown NA
    suggests spelling NA
    suggests tidyr NA
    suggests testthat NA
    linking_to NA NA

    Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.

    base

    is.null (35), ifelse (33), as.character (31), vapply (31), c (27), lapply (23), list (22), attr (19), if (13), names (12), character (10), contributors (9), format (9), logical (8), tryCatch (8), which (8), col (7), for (7), inherits (7), unique (6), unlist (6), as.list (5), data.frame (5), do.call (5), substr (5), date (4), mapply (4), paste0 (4), Sys.time (4), with (4), Filter (3), invisible (3), is.na (3), labels (3), length (3), nzchar (3), paste (3), seq_along (3), setdiff (3), tolower (3), class (2), drop (2), floor (2), gsub (2), identical (2), NextMethod (2), nrow (2), sprintf (2), sub (2), t (2), vector (2), all (1), any (1), args (1), as.data.frame (1), cbind (1), double (1), file (1), intersect (1), ncol (1), open (1), rbind (1), rep (1), round (1), strftime (1), switch (1), Sys.Date (1), typeof (1), unclass (1), units (1), version (1)

    dataset

    get_bibentry (34), collapse_if_needed (15), dataset_df (12), identifier (11), creator (10), dataset_format (10), namespace_attribute (9), var_concept (9), var_unit (9), contributor (8), publisher (8), relation (8), subject (8), xsd_uri (8), dataset_title (7), language (7), description (6), new_dataset (6), rights (6), provenance (5), get_author (4), get_creator (4), get_publisher (4), var_labels (4), var_namespace (4), agent (3), as_dataset_df (3), as_dublincore (3), geolocation (3), idcol_find (3), publication_year (3), author_fmt (2), bibrecord (2), clean_person_name (2), default_provenance (2), dublincore (2), expand_triples (2), flatten_subject (2), get_contributor (2), get_type (2), is_ctb (2), is_person (2), is.dataset_df (2), is.related (2), n_triples (2), normalize_roles (2), pr (2), subject_create (2), to_iso8601 (2), unit_attribute (2), all_identical (1), as_character (1), as_character.haven_labelled_defined (1), as_datacite (1), as_factor (1), as_factor.haven_labelled_defined (1), as_numeric (1), as_numeric.haven_labelled_defined (1), as.character.haven_labelled_defined (1), as.list.haven_labelled_defined (1), as.numeric.haven_labelled_defined (1), as.vector.haven_labelled_defined (1), bind_defined_rows (1), c.haven_labelled_defined (1), compare_creators (1), create_iri (1), datacite (1), datacite_to_triples (1), dataset_to_triples (1), defined (1), describe (1), dublincore_to_triples (1), fix_contributor (1), fix_publisher (1), format.haven_labelled_defined (1), get_namespace_attribute (1), get_person_iri (1), get_unit_attribute (1), get_variable_concepts (1), head.haven_labelled_defined (1), id_to_column (1), is_dataset_df (1), is_doi (1), is.datacite (1), is.datacite.datacite (1), is.defined (1), is.dublincore (1), is.subject (1), label_attribute (1), length.haven_labelled_defined (1), map_role_to_schema (1), n_triple (1), names.dataset_df (1), new_datacite (1), new_datetime_defined (1), new_dublincore (1), new_labelled_defined (1), new_Subject (1), Ops.haven_labelled_defined (1), plot.dataset_df (1), print.bibrecord (1), print.datacite (1), print.dataset_df (1), print.dublincore (1), print.haven_labelled_defined (1), prov_author (1), related_create (1), set_default_bibentry (1), set_namespace_attribute (1), set_unit_attribute (1), set_var_labels (1), strip_defined (1), summary.dataset_df (1), summary.haven_labelled_defined (1), tail.haven_labelled_defined (1), tbl_sum.dataset_df (1), triples_column_generate (1), triples_to_ntriples (1), type_sum.haven_labelled_defined (1), var_concept.default (1), var_label.dataset_df (1), var_label.defined (1), xsd_convert (1)

    assertthat

    assert_that (30)

    graphics

    title (10)

    labelled

    var_label (9), to_labelled (1)

    utils

    person (4), bibentry (2), citation (1), data (1), str (1)

    stats

    df (5)

    vctrs

    vec_data (5)

    haven

    labelled (1)

    tibble

    new_tibble (1)

    NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.


    2. Statistical Properties

    This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.

    Details of statistical properties (click to open)

    The package has:

    • code in R (100% in 47 files) and
    • 1 authors
    • 7 vignettes
    • 2 internal data files
    • 8 imported packages
    • 119 exported functions (median 9 lines of code)
    • 233 non-exported functions in R (median 10 lines of code)

    Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages
    The following terminology is used:

    • loc = "Lines of Code"
    • fn = "function"
    • exp/not_exp = exported / not exported

    All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function

    The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.

    measure value percentile noteworthy
    files_R 47 94.6
    files_vignettes 7 97.9
    files_tests 44 98.7
    loc_R 3192 89.6
    loc_vignettes 1320 93.5
    loc_tests 3149 95.4 TRUE
    num_vignettes 7 98.3 TRUE
    data_size_total 2046 61.5
    data_size_median 1023 63.4
    n_fns_r 352 94.4
    n_fns_r_exported 119 96.1 TRUE
    n_fns_r_not_exported 233 93.6
    n_fns_per_file_r 5 67.3
    num_params_per_fn 2 8.2
    loc_per_fn_r 9 24.4
    loc_per_fn_r_exp 9 19.7
    loc_per_fn_r_not_exp 10 31.6
    rel_whitespace_R 20 90.4
    rel_whitespace_vignettes 34 95.6 TRUE
    rel_whitespace_tests 16 93.9
    doclines_per_fn_exp 49 61.8
    doclines_per_fn_not_exp 0 0.0 TRUE
    fn_call_network_size 308 91.7

    2a. Network visualisation

    Click to see the interactive network visualisation of calls between objects in package


    3. goodpractice and other checks

    Details of goodpractice checks (click to open)

    3a. Continuous Integration Badges

    rhub.yaml

    GitHub Workflow Results

    id name conclusion sha run_number date
    17221850452 bottlegreen-tench: linux, m1-san, macos-arm64, windows success b26562 18 2025-08-25
    17221847550 pkgcheck success b26562 312 2025-08-25
    17178439271 princely-oropendola: linux, m1-san, macos, macos-arm64, windows, atlas, c23 failure 7227d4 16 2025-08-23
    17216004088 privy-marten: linux, m1-san, macos, macos-arm64, windows success 2cd480 17 2025-08-25
    17221847542 R-CMD-check success b26562 239 2025-08-25
    17221847556 test-coverage.yaml success b26562 322 2025-08-25

    3b. goodpractice results

    R CMD check with rcmdcheck

    R CMD check generated the following check_fails:

    1. no_description_date
    2. no_import_package_as_a_whole

    Test coverage with covr

    Package coverage: 87.87

    Cyclocomplexity with cyclocomp

    The following functions have cyclocomplexity >= 15:

    function cyclocomplexity
    datacite_to_triples 33
    as_datacite 28
    defined 25
    fix_contributor 21
    new_datetime_defined 21
    new_labelled_defined 21
    create_iri 20
    as_dublincore 18
    identifier<- 18
    language<- 16
    print.datacite 15
    print.dublincore 15
    related_item 15
    relation 15

    Static code analyses with lintr

    lintr found no issues with this package!


    4. Other Checks

    Details of other checks (click to open)

    ✖️ The following 13 function names are duplicated in other packages:

      • as_character from metan, radiant.data, retroharmonize, sjlabelled
      • as_numeric from descstat, metan, qdapRegex, radiant.data, retroharmonize, sjlabelled, zenplots
      • describe from AzureVision, Bolstad2, describer, dlookr, explore, Hmisc, iBreakDown, ingredients, lambda.r, MSbox, onewaytests, prettyR, psych, psych, psyntur, questionr, radiant.data, RCPA3, Rlab, scan, scorecard, sylly, tidycomm
      • description from dataMaid, dataPreparation, dataReporter, dcmodify, memisc, metaboData, PerseusR, ritis, rmutil, rsyncrosim, stream, synchronicity, timeSeries, tis, validate
      • get_bibentry from eurostat
      • identifier from Ramble
      • is.defined from nonmemica
      • language from sylly, wakefield
      • provenance from provenance
      • related_create from ckanr
      • relation from osmar, relatable, relations, yarr
      • subject from DGM, emayili, gmailr, sendgridr
      • var_labels from formatters, sjlabelled


    Package Versions

    package version
    pkgstats 0.2.0.61
    pkgcheck 0.1.2.214


    Editor-in-Chief Instructions:

    This package is in top shape and may be passed on to a handling editor

  14. maurolepore commented on Aug 27, 2025

    @maurolepore
    Member

    Thanks @antaldaniel for the update.

    From my perspective as an editor I see you're committed to being transparent and to staying on top of CRAN requirements.

    Also the editorial board is collectively happy to see that you have responded in positive ways both to my feedback here and that of a real user at ropensci/dataset#39. We think the work you have put in deserves a positive outcome and we would love to accept and welcome the dataset package to rOpenSci.

    Next I'll instruct the bot to formalize the approval. It'll respond with a checklist for you to follow. That will automatically close this issue but feel free to continue asking questions as you work through the checklist.

    Congratulations!

  15. maurolepore commented on Aug 27, 2025

    @maurolepore
    Member

    @ropensci-review-bot approve dataset

  16. ropensci-review-bot commented on Aug 27, 2025

    @ropensci-review-bot
    Collaborator

    Approved! Thanks @antaldaniel for submitting and @maurolepore for your reviews! 😁

    To-dos:

    Repository transfer

    Usually repositories are transferred to the rOpenSci GitHub organization.
    You can however ask for an exception, please ping the editor in charge of the submission.

    • Transfer the repo to rOpenSci's "ropensci" GitHub organization under "Settings" in your repo. I have invited you to a team that should allow you to do so. You will need to enable two-factor authentication for your GitHub account.
      This invitation will expire after one week. If it happens write a comment @ropensci-review-bot invite me to ropensci/<package-name> which will re-send an invitation.
    • After transfer write a comment @ropensci-review-bot finalize transfer of <package-name> where <package-name> is the repo/package name. This will give you admin access back.
    • Fix all links to the GitHub repo to point to the repo under the ropensci organization.
    • Fix any links in badges for CI and coverage to point to the new repository URL.
    • Delete your current code of conduct file if you had one since rOpenSci's default one will apply, see https://devguide.ropensci.org/collaboration.html#coc-file

    Other steps

    • If you already had a pkgdown website and are ok relying only on rOpenSci central docs building and branding,
      • deactivate the automatic deployment you might have set up
      • remove styling tweaks from your pkgdown config but keep that config file
      • replace the whole current pkgdown website with a redirecting page
      • replace your package docs URL with https://docs.ropensci.org/package_name
      • In addition, in your DESCRIPTION file, include the docs link in the URL field alongside the link to the GitHub repository, e.g.: URL: https://docs.ropensci.org/foobar, https://github.com/ropensci/foobar
    • Skim the docs of the pkgdown automatic deployment, in particular if your website needs MathJax.
    • Increment the package version to reflect the changes you made during review. In NEWS.md, add a heading for the new version and one bullet for each user-facing change, and each developer-facing change that you think is relevant.
    • We're starting to roll out software metadata files to all rOpenSci packages via the Codemeta initiative, see https://docs.ropensci.org/codemetar/ for how to include it in your package, after installing the package - should be easy as running codemetar::write_codemeta() in the root of your package.
    • You can add this installation method to your package README install.packages("<package-name>", repos = c('https://ropensci.r-universe.dev', 'https://cloud.r-project.org')) thanks to R-universe.

    Should you want to acknowledge your reviewers in your package DESCRIPTION, you can do so by making them "rev"-type contributors in the Authors@R field (with their consent).

    Welcome aboard! We'd love to host a post about your package - either a short introduction to it with an example for a technical audience or a longer post with some narrative about its development or something you learned, and an example of its use for a broader readership. If you are interested, consult the blog guide, and tag @ropensci/blog-editors in your reply. They will get in touch about timing and can answer any questions.

    We maintain an online book with our best practice and tips, this chapter starts the 3d section that's about guidance for after onboarding (with advice on releases, package marketing, GitHub grooming); the guide also feature CRAN gotchas. Please tell us what could be improved.

    Last but not least, you can volunteer as a reviewer via filling a short form.

  17. mpadge commented on Aug 27, 2025

    @mpadge
    Member

    Congrats @antaldaniel, we have all especially appreciated all the work you put into revising the package to get to its current state. Great job!

  18. antaldaniel commented on Aug 27, 2025

    @antaldaniel
    Author

    Dear @mpadge and @maurolepore, thank you for your patience with me, and I am honoured and thankful. I will follow, and hopefully not make clumsy mistakes with the package transfer.

    It is very lucky that your approval came almost in the same minute as that of CRAN, so the same version was approved in both places. The CRAN issue was somewhat different. The dataset package’s tests already account for CRAN’s URL checks (including requests without a user-agent). The only issue arose from example.com, which always returns 404 by design (RFC 2606). In my view, CRAN should ideally treat example.com differently, because that namesapce is reserved for testing and documentation, and it is by design should not resolve to anything; but I have replaced these with resolvable example URIs.

    I will also publish a project for a 0.5.0 next release with plans to integrate better with other rOpenSci packages, and I hope that I will find some contributors for that. And I would also like to develop the Design Principles & Future Work Semantically Enriched, Standards-Aligned Datasets in R vignette into a journal article.

  19. antaldaniel commented on Aug 27, 2025

    @antaldaniel
    Author

    @maelle Can I add your name and ORCiD to the reviwer contributors in the DESCRIPTION?

  20. antaldaniel commented on Aug 27, 2025

    @antaldaniel
    Author

    @ropensci-review-bot finalize transfer of dataset

  21. ropensci-review-bot commented on Aug 27, 2025

    @ropensci-review-bot
    Collaborator

    Transfer completed.
    The dataset team is now owner of the repository and the author has been invited to the team

  22. antaldaniel commented on Sep 3, 2025

    @antaldaniel
    Author

    Thanks! I’d be glad to write a blogpost about dataset. I’m thinking of starting with a short technical introduction for R users, and later developing a longer case study around publishing datasets with some real, new, scientific data that I got from a data partner. I’ll follow the rOpenSci blog guide and look forward to coordinating with @ropensci/blog-editors on timing and scope.

  23. steffilazerte commented on Sep 4, 2025

    @steffilazerte
    Member

    Hi @antaldaniel! Happy to hear that you'd like to write a post!
    Go ahead and read the guide and start your post. When you're ready for a review, open a PR and we can chat about when to publish. If you'd like a deadline to help encourage you to write, we can do that too 😉
    If you have any questions, feel free to ping me here or on Slack (steffilazerte).

  24. antaldaniel commented on Sep 4, 2025

    @antaldaniel
    Author

    @steffilazerte, thanks, I have a question.

    What I would like to do is to do two blogposts, if possible, a short intro with an example, and then maybe 1-2 weeks later a longer one with a tutorial on how to pubish a scientifically novel dataset, as linked open data, with codebooks and all, in a semantically rich server without a servless solution. It is complex, but provides a very useful hack for people who want to produce FAIR 5-star or the new 8-star datasets and have no strong institutional repository support for that. Last but not least, I also would like to make a journal publication.

    Would it be OK for you to do send two PRs, the short into this weekend or early next week, and the tutorial at the end of the month? If it has to be only one blog post, than I think that I choose the longer one and with a bit later deadline.

  25. steffilazerte commented on Sep 4, 2025

    @steffilazerte
    Member

    I think that's fine! My only request would be that you add a bit of 'story' to your shorter blog post. We try to ensure that posts of this nature are a bit more than just a tutorial. Consider adding a bit of background motivation for making the package, or about your experiences in the process or review. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions