{"id":16273324,"url":"https://github.com/colearendt/cellist","last_synced_at":"2026-02-24T09:34:57.513Z","repository":{"id":85835489,"uuid":"115946879","full_name":"colearendt/cellist","owner":"colearendt","description":"Making beautiful music out of cell-lists, list-columns, nested lists, and the like","archived":false,"fork":false,"pushed_at":"2018-01-01T20:50:16.000Z","size":59,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-24T15:02:20.545Z","etag":null,"topics":["list","nested-structures","r","r-package"],"latest_commit_sha":null,"homepage":"https://colearendt.github.io/cellist/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/colearendt.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-01T20:49:08.000Z","updated_at":"2018-10-26T15:01:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"91b233a5-a597-4c76-9107-63e9ede23182","html_url":"https://github.com/colearendt/cellist","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/colearendt/cellist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colearendt%2Fcellist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colearendt%2Fcellist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colearendt%2Fcellist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colearendt%2Fcellist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/colearendt","download_url":"https://codeload.github.com/colearendt/cellist/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colearendt%2Fcellist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29777920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T04:54:30.205Z","status":"ssl_error","status_checked_at":"2026-02-24T04:53:58.628Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["list","nested-structures","r","r-package"],"created_at":"2024-10-10T18:23:48.623Z","updated_at":"2026-02-24T09:34:57.494Z","avatar_url":"https://github.com/colearendt.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\noutput: github_document\n---\n\n\u003c!-- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n```{r setup, include = FALSE}\nknitr::opts_chunk$set(\n  collapse = TRUE,\n  comment = \"#\u003e\",\n  fig.path = \"man/figures/README-\",\n  out.width = \"100%\"\n)\n```\n# cellist\n\nThe goal of cellist is to turn nested list columns into tidy data_frames.\n\n## Example\n\nThis is a basic example which shows you how to solve a common problem:\n\n```{r example}\n## basic example code\n```\n\n## Key Functions\n\n- `col_spec` and related items (`col_list`, `col_object`, `col_double`, etc.)\n- `guess_spec`\n- `spread_list`\n- `gather_list`\n- inverse operations to rebuild the list?\n- mappings from `json_schema` objects to `col_spec`?\n- helpers to move from `xml2` and `jsonlite` objects to nested lists\n\n## API\n\nShould be able to do something like `col_list()`, `col_list_spread()`, `col_list_gather()`... Should also be able to nest specs in `col_list`... something like the following...\n\n```{r eval=FALSE}\ncol_spec(\n  list(\n    d = col_double()\n    , int = col_integer()\n    , obj_raw = col_list()\n    , obj_spread = col_list_spread(\n      a = col_double\n      , name = col_character()\n    )\n    , obj_gather = col_list_gather(\n      b = col_integer()\n      , name = col_character()\n    )\n    , arr_raw = col_list()\n    , arr_spread = col_list_spread(\n      1 = col_integer()\n      , 2 = col_integer()\n    )\n    , arr_gather = col_list_gather(\n      col_integer()\n    )\n  )\n)\n\n```\n\nThis API seems a little unweildy, but it seems that you would be able to pull out the `collector` functionality into a separate package and make it extensible (so the code is not defined for `readr` and `tidylist`)!  These collectors make use of the `name` to do look-up by reference.  This is not unlike `readr`, who also has a `col_names` parameter.  The difference is that in this case, I think asked-for fields should be returned, even if not present.\n\nThe real power comes in something like `guess_spec` that will generate a spec for you... you could also conceive of generating a spec from a JSON Schema / XML schema object!\n\nThis also needs to be do-able by integer reference, i.e. `list(1,\"a\",\"b\")` would grab the 1st object of a list, the first \"a\" key, and then the first \"b\" key.\n\n\n# Open Questions\n\n- How should we handle the existing list?  Should we hold to \"copy on reference\" or should we modify the list using \"do not repeat yourself\"... pull the items out?  Probaby pull the items out... some items are not reversible\n- maybe worth creating callbacks for naming the columns...?  This at least for unnamed columns... named columns will be preserved?  What about handling nested behavior, though... maybe a callback for that too\n\n\n# To Do\n\n- Create tests to define what the internal functionality should be doing (since I cannot keep it straight otherwise...)\n- Integrate `purrr` more natively\n- Handle name conflicts\n- `col_spec` needs to be changed to `col_types` and parsed by `col_spec_standardise`, much like `readr` does\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolearendt%2Fcellist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcolearendt%2Fcellist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolearendt%2Fcellist/lists"}