This is an extremely minimal client. You need to know the API to be able to use this client. All this function does is:
Try to substitute each listed parameter into
endpoint, using the{parameter}notation.If a GET request (the default), then add all other listed parameters as query parameters.
If not a GET request, then send the other parameters in the request body, as JSON.
Convert the response to an R list using
jsonlite::fromJSON().
Usage
gh(
endpoint,
...,
per_page = NULL,
.per_page = NULL,
.token = NULL,
.destfile = NULL,
.overwrite = FALSE,
.api_url = NULL,
.method = "GET",
.limit = NULL,
.accept = "application/vnd.github.v3+json",
.send_headers = NULL,
.progress = TRUE,
.params = list(),
.max_wait = 600,
.max_rate = NULL
)Arguments
- endpoint
GitHub API endpoint. Must be one of the following forms:
METHOD path, e.g.GET /rate_limit,path, e.g./rate_limit,METHOD url, e.g.GET https://api.github.com/rate_limit,url, e.g.https://api.github.com/rate_limit.
If the method is not supplied, will use
.method, which defaults to"GET".- ...
Name-value pairs giving API parameters. Will be matched into
endpointplaceholders, sent as query parameters in GET requests, and as a JSON body of POST requests. If there is only one unnamed parameter, and it is a raw vector, then it will not be JSON encoded, but sent as raw data, as is. This can be used for example to add assets to releases. NamedNULLvalues are silently dropped. For GET requests, namedNAvalues trigger an error. For other methods, namedNAvalues are included in the body of the request, as JSONnull.- per_page, .per_page
Number of items to return per page. If omitted, will be substituted by
max(.limit, 100)if.limitis set, otherwise determined by the API (never greater than 100).- .token
Authentication token. Defaults to
gh_token().- .destfile
Path to write response to disk. If
NULL(default), response will be processed and returned as an object. If path is given, response will be written to disk in the form sent. gh writes the response to a temporary file, and renames that file to.destfileafter the request was successful. The name of the temporary file is created by adding a-<random>.gh-tmpsuffix to it, where<random>is an ASCII string with random characters. gh removes the temporary file on error.- .overwrite
If
.destfileis provided, whether to overwrite an existing file. Defaults toFALSE. If an error happens the original file is kept.- .api_url
Github API url (default: https://api.github.com). Used if
endpointjust contains a path. Defaults toGITHUB_API_URLenvironment variable if set.- .method
HTTP method to use if not explicitly supplied in the
endpoint.- .limit
Number of records to return. This can be used instead of manual pagination. By default it is
NULL, which means that the defaults of the GitHub API are used. You can set it to a number to request more (or less) records, and also toInfto request all records. Note, that if you request many records, then multiple GitHub API calls are used to get them, and this can take a potentially long time.- .accept
The value of the
AcceptHTTP header. Defaults to"application/vnd.github.v3+json". IfAcceptis given in.send_headers, then that will be used. This parameter can be used to provide a custom media type, in order to access a preview feature of the API.- .send_headers
Named character vector of header field values (except
Authorization, which is handled via.token). This can be used to override or augment the defaultUser-Agentheader:"https://github.com/r-lib/gh".- .progress
Whether to show a progress indicator for calls that need more than one HTTP request.
- .params
Additional list of parameters to append to
.... It is easier to use this than...if you have your parameters in a list already.- .max_wait
Maximum number of seconds to wait if rate limited. Defaults to 10 minutes.
- .max_rate
Maximum request rate in requests per second. Set this to automatically throttle requests.
Value
Answer from the API as a gh_response object, which is also a
list. Failed requests will generate an R error. Requests that
generate a raw response will return a raw vector.
Caching
gh() uses httr2's HTTP cache by default. It is stored in
tools::R_user_dir("gh", "cache"), capped at 100 MB, and shared
across R sessions. When the cache holds a previous response for a
request, gh() lets httr2 attach If-None-Match / If-Modified-Since
headers automatically and replays the cached body on a 304 Not Modified reply, so the call doesn't count against your GitHub rate
limit. Set options(gh_cache = FALSE) to disable, or delete the
directory above to clear it.
If you pass If-None-Match (or If-Modified-Since) yourself via
.send_headers, httr2's cache does not intervene: a 304 response
is returned as an empty gh_response with the response headers
(including ETag) still attached on attr(res, "response"). You are
responsible for holding on to the previous body and matching it
against the ETag.
See also
gh_gql() if you want to use the GitHub GraphQL API,
gh_whoami() for details on GitHub API token management.
Examples
## Repositories of a user, these are equivalent
gh("/users/hadley/repos", .limit = 2)
#> [
#> {
#> "id": 40423928,
#> "node_id": "MDEwOlJlcG9zaXRvcnk0MDQyMzkyOA==",
#> "name": "15-state-of-the-union",
#> "full_name": "hadley/15-state-of-the-union",
#> "private": false,
#> "owner": {
#> "login": "hadley",
#> "id": 4196,
#> "node_id": "MDQ6VXNlcjQxOTY=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/4196?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/hadley",
#> "html_url": "https://github.com/hadley",
#> "followers_url": "https://api.github.com/users/hadley/followers",
#> "following_url": "https://api.github.com/users/hadley/following{/other_user}",
#> "gists_url": "https://api.github.com/users/hadley/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/hadley/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/hadley/subscriptions",
#> "organizations_url": "https://api.github.com/users/hadley/orgs",
#> "repos_url": "https://api.github.com/users/hadley/repos",
#> "events_url": "https://api.github.com/users/hadley/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/hadley/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/hadley/15-state-of-the-union",
#> "description": {},
#> "fork": false,
#> "url": "https://api.github.com/repos/hadley/15-state-of-the-union",
#> "forks_url": "https://api.github.com/repos/hadley/15-state-of-the-union/forks",
#> "keys_url": "https://api.github.com/repos/hadley/15-state-of-the-union/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/hadley/15-state-of-the-union/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/hadley/15-state-of-the-union/teams",
#> "hooks_url": "https://api.github.com/repos/hadley/15-state-of-the-union/hooks",
#> "issue_events_url": "https://api.github.com/repos/hadley/15-state-of-the-union/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/hadley/15-state-of-the-union/events",
#> "assignees_url": "https://api.github.com/repos/hadley/15-state-of-the-union/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/hadley/15-state-of-the-union/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/hadley/15-state-of-the-union/tags",
#> "blobs_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/hadley/15-state-of-the-union/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/hadley/15-state-of-the-union/languages",
#> "stargazers_url": "https://api.github.com/repos/hadley/15-state-of-the-union/stargazers",
#> "contributors_url": "https://api.github.com/repos/hadley/15-state-of-the-union/contributors",
#> "subscribers_url": "https://api.github.com/repos/hadley/15-state-of-the-union/subscribers",
#> "subscription_url": "https://api.github.com/repos/hadley/15-state-of-the-union/subscription",
#> "commits_url": "https://api.github.com/repos/hadley/15-state-of-the-union/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/hadley/15-state-of-the-union/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/hadley/15-state-of-the-union/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/hadley/15-state-of-the-union/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/hadley/15-state-of-the-union/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/hadley/15-state-of-the-union/merges",
#> "archive_url": "https://api.github.com/repos/hadley/15-state-of-the-union/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/hadley/15-state-of-the-union/downloads",
#> "issues_url": "https://api.github.com/repos/hadley/15-state-of-the-union/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/hadley/15-state-of-the-union/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/hadley/15-state-of-the-union/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/hadley/15-state-of-the-union/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/hadley/15-state-of-the-union/labels{/name}",
#> "releases_url": "https://api.github.com/repos/hadley/15-state-of-the-union/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/hadley/15-state-of-the-union/deployments",
#> "created_at": "2015-08-09T03:22:26Z",
#> "updated_at": "2025-11-19T10:23:46Z",
#> "pushed_at": "2015-08-10T20:29:10Z",
#> "git_url": "git://github.com/hadley/15-state-of-the-union.git",
#> "ssh_url": "git@github.com:hadley/15-state-of-the-union.git",
#> "clone_url": "https://github.com/hadley/15-state-of-the-union.git",
#> "svn_url": "https://github.com/hadley/15-state-of-the-union",
#> "homepage": {},
#> "size": 4519,
#> "stargazers_count": 22,
#> "watchers_count": 22,
#> "language": "R",
#> "has_issues": true,
#> "has_projects": true,
#> "has_downloads": true,
#> "has_wiki": true,
#> "has_pages": false,
#> "has_discussions": false,
#> "forks_count": 7,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 0,
#> "license": {},
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "has_pull_requests": true,
#> "pull_request_creation_policy": "all",
#> "topics": [],
#> "visibility": "public",
#> "forks": 7,
#> "open_issues": 0,
#> "watchers": 22,
#> "default_branch": "master",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> },
#> {
#> "id": 40544418,
#> "node_id": "MDEwOlJlcG9zaXRvcnk0MDU0NDQxOA==",
#> "name": "15-student-papers",
#> "full_name": "hadley/15-student-papers",
#> "private": false,
#> "owner": {
#> "login": "hadley",
#> "id": 4196,
#> "node_id": "MDQ6VXNlcjQxOTY=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/4196?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/hadley",
#> "html_url": "https://github.com/hadley",
#> "followers_url": "https://api.github.com/users/hadley/followers",
#> "following_url": "https://api.github.com/users/hadley/following{/other_user}",
#> "gists_url": "https://api.github.com/users/hadley/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/hadley/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/hadley/subscriptions",
#> "organizations_url": "https://api.github.com/users/hadley/orgs",
#> "repos_url": "https://api.github.com/users/hadley/repos",
#> "events_url": "https://api.github.com/users/hadley/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/hadley/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/hadley/15-student-papers",
#> "description": "Graphics & computing student paper winners @ JSM 2015",
#> "fork": false,
#> "url": "https://api.github.com/repos/hadley/15-student-papers",
#> "forks_url": "https://api.github.com/repos/hadley/15-student-papers/forks",
#> "keys_url": "https://api.github.com/repos/hadley/15-student-papers/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/hadley/15-student-papers/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/hadley/15-student-papers/teams",
#> "hooks_url": "https://api.github.com/repos/hadley/15-student-papers/hooks",
#> "issue_events_url": "https://api.github.com/repos/hadley/15-student-papers/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/hadley/15-student-papers/events",
#> "assignees_url": "https://api.github.com/repos/hadley/15-student-papers/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/hadley/15-student-papers/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/hadley/15-student-papers/tags",
#> "blobs_url": "https://api.github.com/repos/hadley/15-student-papers/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/hadley/15-student-papers/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/hadley/15-student-papers/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/hadley/15-student-papers/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/hadley/15-student-papers/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/hadley/15-student-papers/languages",
#> "stargazers_url": "https://api.github.com/repos/hadley/15-student-papers/stargazers",
#> "contributors_url": "https://api.github.com/repos/hadley/15-student-papers/contributors",
#> "subscribers_url": "https://api.github.com/repos/hadley/15-student-papers/subscribers",
#> "subscription_url": "https://api.github.com/repos/hadley/15-student-papers/subscription",
#> "commits_url": "https://api.github.com/repos/hadley/15-student-papers/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/hadley/15-student-papers/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/hadley/15-student-papers/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/hadley/15-student-papers/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/hadley/15-student-papers/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/hadley/15-student-papers/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/hadley/15-student-papers/merges",
#> "archive_url": "https://api.github.com/repos/hadley/15-student-papers/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/hadley/15-student-papers/downloads",
#> "issues_url": "https://api.github.com/repos/hadley/15-student-papers/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/hadley/15-student-papers/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/hadley/15-student-papers/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/hadley/15-student-papers/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/hadley/15-student-papers/labels{/name}",
#> "releases_url": "https://api.github.com/repos/hadley/15-student-papers/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/hadley/15-student-papers/deployments",
#> "created_at": "2015-08-11T13:51:29Z",
#> "updated_at": "2019-08-18T16:49:40Z",
#> "pushed_at": "2015-08-21T15:27:51Z",
#> "git_url": "git://github.com/hadley/15-student-papers.git",
#> "ssh_url": "git@github.com:hadley/15-student-papers.git",
#> "clone_url": "https://github.com/hadley/15-student-papers.git",
#> "svn_url": "https://github.com/hadley/15-student-papers",
#> "homepage": {},
#> "size": 2956,
#> "stargazers_count": 14,
#> "watchers_count": 14,
#> "language": "R",
#> "has_issues": true,
#> "has_projects": true,
#> "has_downloads": true,
#> "has_wiki": true,
#> "has_pages": false,
#> "has_discussions": false,
#> "forks_count": 0,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 0,
#> "license": {},
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "has_pull_requests": true,
#> "pull_request_creation_policy": "all",
#> "topics": [],
#> "visibility": "public",
#> "forks": 0,
#> "open_issues": 0,
#> "watchers": 14,
#> "default_branch": "master",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> }
#> ]
gh("/users/{username}/repos", username = "hadley", .limit = 2)
#> [
#> {
#> "id": 40423928,
#> "node_id": "MDEwOlJlcG9zaXRvcnk0MDQyMzkyOA==",
#> "name": "15-state-of-the-union",
#> "full_name": "hadley/15-state-of-the-union",
#> "private": false,
#> "owner": {
#> "login": "hadley",
#> "id": 4196,
#> "node_id": "MDQ6VXNlcjQxOTY=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/4196?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/hadley",
#> "html_url": "https://github.com/hadley",
#> "followers_url": "https://api.github.com/users/hadley/followers",
#> "following_url": "https://api.github.com/users/hadley/following{/other_user}",
#> "gists_url": "https://api.github.com/users/hadley/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/hadley/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/hadley/subscriptions",
#> "organizations_url": "https://api.github.com/users/hadley/orgs",
#> "repos_url": "https://api.github.com/users/hadley/repos",
#> "events_url": "https://api.github.com/users/hadley/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/hadley/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/hadley/15-state-of-the-union",
#> "description": {},
#> "fork": false,
#> "url": "https://api.github.com/repos/hadley/15-state-of-the-union",
#> "forks_url": "https://api.github.com/repos/hadley/15-state-of-the-union/forks",
#> "keys_url": "https://api.github.com/repos/hadley/15-state-of-the-union/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/hadley/15-state-of-the-union/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/hadley/15-state-of-the-union/teams",
#> "hooks_url": "https://api.github.com/repos/hadley/15-state-of-the-union/hooks",
#> "issue_events_url": "https://api.github.com/repos/hadley/15-state-of-the-union/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/hadley/15-state-of-the-union/events",
#> "assignees_url": "https://api.github.com/repos/hadley/15-state-of-the-union/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/hadley/15-state-of-the-union/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/hadley/15-state-of-the-union/tags",
#> "blobs_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/hadley/15-state-of-the-union/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/hadley/15-state-of-the-union/languages",
#> "stargazers_url": "https://api.github.com/repos/hadley/15-state-of-the-union/stargazers",
#> "contributors_url": "https://api.github.com/repos/hadley/15-state-of-the-union/contributors",
#> "subscribers_url": "https://api.github.com/repos/hadley/15-state-of-the-union/subscribers",
#> "subscription_url": "https://api.github.com/repos/hadley/15-state-of-the-union/subscription",
#> "commits_url": "https://api.github.com/repos/hadley/15-state-of-the-union/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/hadley/15-state-of-the-union/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/hadley/15-state-of-the-union/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/hadley/15-state-of-the-union/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/hadley/15-state-of-the-union/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/hadley/15-state-of-the-union/merges",
#> "archive_url": "https://api.github.com/repos/hadley/15-state-of-the-union/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/hadley/15-state-of-the-union/downloads",
#> "issues_url": "https://api.github.com/repos/hadley/15-state-of-the-union/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/hadley/15-state-of-the-union/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/hadley/15-state-of-the-union/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/hadley/15-state-of-the-union/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/hadley/15-state-of-the-union/labels{/name}",
#> "releases_url": "https://api.github.com/repos/hadley/15-state-of-the-union/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/hadley/15-state-of-the-union/deployments",
#> "created_at": "2015-08-09T03:22:26Z",
#> "updated_at": "2025-11-19T10:23:46Z",
#> "pushed_at": "2015-08-10T20:29:10Z",
#> "git_url": "git://github.com/hadley/15-state-of-the-union.git",
#> "ssh_url": "git@github.com:hadley/15-state-of-the-union.git",
#> "clone_url": "https://github.com/hadley/15-state-of-the-union.git",
#> "svn_url": "https://github.com/hadley/15-state-of-the-union",
#> "homepage": {},
#> "size": 4519,
#> "stargazers_count": 22,
#> "watchers_count": 22,
#> "language": "R",
#> "has_issues": true,
#> "has_projects": true,
#> "has_downloads": true,
#> "has_wiki": true,
#> "has_pages": false,
#> "has_discussions": false,
#> "forks_count": 7,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 0,
#> "license": {},
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "has_pull_requests": true,
#> "pull_request_creation_policy": "all",
#> "topics": [],
#> "visibility": "public",
#> "forks": 7,
#> "open_issues": 0,
#> "watchers": 22,
#> "default_branch": "master",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> },
#> {
#> "id": 40544418,
#> "node_id": "MDEwOlJlcG9zaXRvcnk0MDU0NDQxOA==",
#> "name": "15-student-papers",
#> "full_name": "hadley/15-student-papers",
#> "private": false,
#> "owner": {
#> "login": "hadley",
#> "id": 4196,
#> "node_id": "MDQ6VXNlcjQxOTY=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/4196?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/hadley",
#> "html_url": "https://github.com/hadley",
#> "followers_url": "https://api.github.com/users/hadley/followers",
#> "following_url": "https://api.github.com/users/hadley/following{/other_user}",
#> "gists_url": "https://api.github.com/users/hadley/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/hadley/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/hadley/subscriptions",
#> "organizations_url": "https://api.github.com/users/hadley/orgs",
#> "repos_url": "https://api.github.com/users/hadley/repos",
#> "events_url": "https://api.github.com/users/hadley/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/hadley/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/hadley/15-student-papers",
#> "description": "Graphics & computing student paper winners @ JSM 2015",
#> "fork": false,
#> "url": "https://api.github.com/repos/hadley/15-student-papers",
#> "forks_url": "https://api.github.com/repos/hadley/15-student-papers/forks",
#> "keys_url": "https://api.github.com/repos/hadley/15-student-papers/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/hadley/15-student-papers/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/hadley/15-student-papers/teams",
#> "hooks_url": "https://api.github.com/repos/hadley/15-student-papers/hooks",
#> "issue_events_url": "https://api.github.com/repos/hadley/15-student-papers/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/hadley/15-student-papers/events",
#> "assignees_url": "https://api.github.com/repos/hadley/15-student-papers/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/hadley/15-student-papers/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/hadley/15-student-papers/tags",
#> "blobs_url": "https://api.github.com/repos/hadley/15-student-papers/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/hadley/15-student-papers/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/hadley/15-student-papers/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/hadley/15-student-papers/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/hadley/15-student-papers/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/hadley/15-student-papers/languages",
#> "stargazers_url": "https://api.github.com/repos/hadley/15-student-papers/stargazers",
#> "contributors_url": "https://api.github.com/repos/hadley/15-student-papers/contributors",
#> "subscribers_url": "https://api.github.com/repos/hadley/15-student-papers/subscribers",
#> "subscription_url": "https://api.github.com/repos/hadley/15-student-papers/subscription",
#> "commits_url": "https://api.github.com/repos/hadley/15-student-papers/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/hadley/15-student-papers/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/hadley/15-student-papers/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/hadley/15-student-papers/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/hadley/15-student-papers/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/hadley/15-student-papers/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/hadley/15-student-papers/merges",
#> "archive_url": "https://api.github.com/repos/hadley/15-student-papers/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/hadley/15-student-papers/downloads",
#> "issues_url": "https://api.github.com/repos/hadley/15-student-papers/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/hadley/15-student-papers/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/hadley/15-student-papers/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/hadley/15-student-papers/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/hadley/15-student-papers/labels{/name}",
#> "releases_url": "https://api.github.com/repos/hadley/15-student-papers/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/hadley/15-student-papers/deployments",
#> "created_at": "2015-08-11T13:51:29Z",
#> "updated_at": "2019-08-18T16:49:40Z",
#> "pushed_at": "2015-08-21T15:27:51Z",
#> "git_url": "git://github.com/hadley/15-student-papers.git",
#> "ssh_url": "git@github.com:hadley/15-student-papers.git",
#> "clone_url": "https://github.com/hadley/15-student-papers.git",
#> "svn_url": "https://github.com/hadley/15-student-papers",
#> "homepage": {},
#> "size": 2956,
#> "stargazers_count": 14,
#> "watchers_count": 14,
#> "language": "R",
#> "has_issues": true,
#> "has_projects": true,
#> "has_downloads": true,
#> "has_wiki": true,
#> "has_pages": false,
#> "has_discussions": false,
#> "forks_count": 0,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 0,
#> "license": {},
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "has_pull_requests": true,
#> "pull_request_creation_policy": "all",
#> "topics": [],
#> "visibility": "public",
#> "forks": 0,
#> "open_issues": 0,
#> "watchers": 14,
#> "default_branch": "master",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> }
#> ]
## Starred repositories of a user
gh("/users/hadley/starred", .limit = 2)
#> [
#> {
#> "id": 1109924834,
#> "node_id": "R_kgDOQigb4g",
#> "name": "ggsql",
#> "full_name": "posit-dev/ggsql",
#> "private": false,
#> "owner": {
#> "login": "posit-dev",
#> "id": 107264312,
#> "node_id": "O_kgDOBmS5OA",
#> "avatar_url": "https://avatars.githubusercontent.com/u/107264312?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/posit-dev",
#> "html_url": "https://github.com/posit-dev",
#> "followers_url": "https://api.github.com/users/posit-dev/followers",
#> "following_url": "https://api.github.com/users/posit-dev/following{/other_user}",
#> "gists_url": "https://api.github.com/users/posit-dev/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/posit-dev/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/posit-dev/subscriptions",
#> "organizations_url": "https://api.github.com/users/posit-dev/orgs",
#> "repos_url": "https://api.github.com/users/posit-dev/repos",
#> "events_url": "https://api.github.com/users/posit-dev/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/posit-dev/received_events",
#> "type": "Organization",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/posit-dev/ggsql",
#> "description": "A SQL extension for declarative data visualisation based on the Grammar of Graphics.",
#> "fork": false,
#> "url": "https://api.github.com/repos/posit-dev/ggsql",
#> "forks_url": "https://api.github.com/repos/posit-dev/ggsql/forks",
#> "keys_url": "https://api.github.com/repos/posit-dev/ggsql/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/posit-dev/ggsql/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/posit-dev/ggsql/teams",
#> "hooks_url": "https://api.github.com/repos/posit-dev/ggsql/hooks",
#> "issue_events_url": "https://api.github.com/repos/posit-dev/ggsql/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/posit-dev/ggsql/events",
#> "assignees_url": "https://api.github.com/repos/posit-dev/ggsql/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/posit-dev/ggsql/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/posit-dev/ggsql/tags",
#> "blobs_url": "https://api.github.com/repos/posit-dev/ggsql/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/posit-dev/ggsql/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/posit-dev/ggsql/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/posit-dev/ggsql/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/posit-dev/ggsql/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/posit-dev/ggsql/languages",
#> "stargazers_url": "https://api.github.com/repos/posit-dev/ggsql/stargazers",
#> "contributors_url": "https://api.github.com/repos/posit-dev/ggsql/contributors",
#> "subscribers_url": "https://api.github.com/repos/posit-dev/ggsql/subscribers",
#> "subscription_url": "https://api.github.com/repos/posit-dev/ggsql/subscription",
#> "commits_url": "https://api.github.com/repos/posit-dev/ggsql/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/posit-dev/ggsql/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/posit-dev/ggsql/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/posit-dev/ggsql/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/posit-dev/ggsql/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/posit-dev/ggsql/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/posit-dev/ggsql/merges",
#> "archive_url": "https://api.github.com/repos/posit-dev/ggsql/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/posit-dev/ggsql/downloads",
#> "issues_url": "https://api.github.com/repos/posit-dev/ggsql/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/posit-dev/ggsql/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/posit-dev/ggsql/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/posit-dev/ggsql/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/posit-dev/ggsql/labels{/name}",
#> "releases_url": "https://api.github.com/repos/posit-dev/ggsql/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/posit-dev/ggsql/deployments",
#> "created_at": "2025-12-04T13:26:11Z",
#> "updated_at": "2026-06-06T04:22:38Z",
#> "pushed_at": "2026-06-01T13:17:13Z",
#> "git_url": "git://github.com/posit-dev/ggsql.git",
#> "ssh_url": "git@github.com:posit-dev/ggsql.git",
#> "clone_url": "https://github.com/posit-dev/ggsql.git",
#> "svn_url": "https://github.com/posit-dev/ggsql",
#> "homepage": "http://ggsql.org/",
#> "size": 175507,
#> "stargazers_count": 487,
#> "watchers_count": 487,
#> "language": "Rust",
#> "has_issues": true,
#> "has_projects": true,
#> "has_downloads": true,
#> "has_wiki": true,
#> "has_pages": true,
#> "has_discussions": false,
#> "forks_count": 22,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 63,
#> "license": {
#> "key": "mit",
#> "name": "MIT License",
#> "spdx_id": "MIT",
#> "url": "https://api.github.com/licenses/mit",
#> "node_id": "MDc6TGljZW5zZTEz"
#> },
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "has_pull_requests": true,
#> "pull_request_creation_policy": "all",
#> "topics": [],
#> "visibility": "public",
#> "forks": 22,
#> "open_issues": 63,
#> "watchers": 487,
#> "default_branch": "main",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> },
#> {
#> "id": 390115983,
#> "node_id": "MDEwOlJlcG9zaXRvcnkzOTAxMTU5ODM=",
#> "name": "py-shiny",
#> "full_name": "posit-dev/py-shiny",
#> "private": false,
#> "owner": {
#> "login": "posit-dev",
#> "id": 107264312,
#> "node_id": "O_kgDOBmS5OA",
#> "avatar_url": "https://avatars.githubusercontent.com/u/107264312?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/posit-dev",
#> "html_url": "https://github.com/posit-dev",
#> "followers_url": "https://api.github.com/users/posit-dev/followers",
#> "following_url": "https://api.github.com/users/posit-dev/following{/other_user}",
#> "gists_url": "https://api.github.com/users/posit-dev/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/posit-dev/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/posit-dev/subscriptions",
#> "organizations_url": "https://api.github.com/users/posit-dev/orgs",
#> "repos_url": "https://api.github.com/users/posit-dev/repos",
#> "events_url": "https://api.github.com/users/posit-dev/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/posit-dev/received_events",
#> "type": "Organization",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/posit-dev/py-shiny",
#> "description": "Shiny for Python",
#> "fork": false,
#> "url": "https://api.github.com/repos/posit-dev/py-shiny",
#> "forks_url": "https://api.github.com/repos/posit-dev/py-shiny/forks",
#> "keys_url": "https://api.github.com/repos/posit-dev/py-shiny/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/posit-dev/py-shiny/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/posit-dev/py-shiny/teams",
#> "hooks_url": "https://api.github.com/repos/posit-dev/py-shiny/hooks",
#> "issue_events_url": "https://api.github.com/repos/posit-dev/py-shiny/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/posit-dev/py-shiny/events",
#> "assignees_url": "https://api.github.com/repos/posit-dev/py-shiny/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/posit-dev/py-shiny/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/posit-dev/py-shiny/tags",
#> "blobs_url": "https://api.github.com/repos/posit-dev/py-shiny/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/posit-dev/py-shiny/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/posit-dev/py-shiny/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/posit-dev/py-shiny/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/posit-dev/py-shiny/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/posit-dev/py-shiny/languages",
#> "stargazers_url": "https://api.github.com/repos/posit-dev/py-shiny/stargazers",
#> "contributors_url": "https://api.github.com/repos/posit-dev/py-shiny/contributors",
#> "subscribers_url": "https://api.github.com/repos/posit-dev/py-shiny/subscribers",
#> "subscription_url": "https://api.github.com/repos/posit-dev/py-shiny/subscription",
#> "commits_url": "https://api.github.com/repos/posit-dev/py-shiny/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/posit-dev/py-shiny/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/posit-dev/py-shiny/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/posit-dev/py-shiny/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/posit-dev/py-shiny/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/posit-dev/py-shiny/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/posit-dev/py-shiny/merges",
#> "archive_url": "https://api.github.com/repos/posit-dev/py-shiny/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/posit-dev/py-shiny/downloads",
#> "issues_url": "https://api.github.com/repos/posit-dev/py-shiny/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/posit-dev/py-shiny/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/posit-dev/py-shiny/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/posit-dev/py-shiny/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/posit-dev/py-shiny/labels{/name}",
#> "releases_url": "https://api.github.com/repos/posit-dev/py-shiny/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/posit-dev/py-shiny/deployments",
#> "created_at": "2021-07-27T20:19:49Z",
#> "updated_at": "2026-06-05T07:47:03Z",
#> "pushed_at": "2026-06-03T20:13:16Z",
#> "git_url": "git://github.com/posit-dev/py-shiny.git",
#> "ssh_url": "git@github.com:posit-dev/py-shiny.git",
#> "clone_url": "https://github.com/posit-dev/py-shiny.git",
#> "svn_url": "https://github.com/posit-dev/py-shiny",
#> "homepage": "https://shiny.posit.co/py/",
#> "size": 30411,
#> "stargazers_count": 1722,
#> "watchers_count": 1722,
#> "language": "Python",
#> "has_issues": true,
#> "has_projects": true,
#> "has_downloads": true,
#> "has_wiki": true,
#> "has_pages": true,
#> "has_discussions": true,
#> "forks_count": 126,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 455,
#> "license": {
#> "key": "mit",
#> "name": "MIT License",
#> "spdx_id": "MIT",
#> "url": "https://api.github.com/licenses/mit",
#> "node_id": "MDc6TGljZW5zZTEz"
#> },
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "has_pull_requests": true,
#> "pull_request_creation_policy": "all",
#> "topics": [],
#> "visibility": "public",
#> "forks": 126,
#> "open_issues": 455,
#> "watchers": 1722,
#> "default_branch": "main",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> }
#> ]
gh("/users/{username}/starred", username = "hadley", .limit = 2)
#> [
#> {
#> "id": 1109924834,
#> "node_id": "R_kgDOQigb4g",
#> "name": "ggsql",
#> "full_name": "posit-dev/ggsql",
#> "private": false,
#> "owner": {
#> "login": "posit-dev",
#> "id": 107264312,
#> "node_id": "O_kgDOBmS5OA",
#> "avatar_url": "https://avatars.githubusercontent.com/u/107264312?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/posit-dev",
#> "html_url": "https://github.com/posit-dev",
#> "followers_url": "https://api.github.com/users/posit-dev/followers",
#> "following_url": "https://api.github.com/users/posit-dev/following{/other_user}",
#> "gists_url": "https://api.github.com/users/posit-dev/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/posit-dev/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/posit-dev/subscriptions",
#> "organizations_url": "https://api.github.com/users/posit-dev/orgs",
#> "repos_url": "https://api.github.com/users/posit-dev/repos",
#> "events_url": "https://api.github.com/users/posit-dev/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/posit-dev/received_events",
#> "type": "Organization",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/posit-dev/ggsql",
#> "description": "A SQL extension for declarative data visualisation based on the Grammar of Graphics.",
#> "fork": false,
#> "url": "https://api.github.com/repos/posit-dev/ggsql",
#> "forks_url": "https://api.github.com/repos/posit-dev/ggsql/forks",
#> "keys_url": "https://api.github.com/repos/posit-dev/ggsql/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/posit-dev/ggsql/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/posit-dev/ggsql/teams",
#> "hooks_url": "https://api.github.com/repos/posit-dev/ggsql/hooks",
#> "issue_events_url": "https://api.github.com/repos/posit-dev/ggsql/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/posit-dev/ggsql/events",
#> "assignees_url": "https://api.github.com/repos/posit-dev/ggsql/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/posit-dev/ggsql/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/posit-dev/ggsql/tags",
#> "blobs_url": "https://api.github.com/repos/posit-dev/ggsql/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/posit-dev/ggsql/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/posit-dev/ggsql/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/posit-dev/ggsql/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/posit-dev/ggsql/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/posit-dev/ggsql/languages",
#> "stargazers_url": "https://api.github.com/repos/posit-dev/ggsql/stargazers",
#> "contributors_url": "https://api.github.com/repos/posit-dev/ggsql/contributors",
#> "subscribers_url": "https://api.github.com/repos/posit-dev/ggsql/subscribers",
#> "subscription_url": "https://api.github.com/repos/posit-dev/ggsql/subscription",
#> "commits_url": "https://api.github.com/repos/posit-dev/ggsql/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/posit-dev/ggsql/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/posit-dev/ggsql/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/posit-dev/ggsql/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/posit-dev/ggsql/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/posit-dev/ggsql/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/posit-dev/ggsql/merges",
#> "archive_url": "https://api.github.com/repos/posit-dev/ggsql/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/posit-dev/ggsql/downloads",
#> "issues_url": "https://api.github.com/repos/posit-dev/ggsql/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/posit-dev/ggsql/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/posit-dev/ggsql/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/posit-dev/ggsql/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/posit-dev/ggsql/labels{/name}",
#> "releases_url": "https://api.github.com/repos/posit-dev/ggsql/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/posit-dev/ggsql/deployments",
#> "created_at": "2025-12-04T13:26:11Z",
#> "updated_at": "2026-06-06T04:22:38Z",
#> "pushed_at": "2026-06-01T13:17:13Z",
#> "git_url": "git://github.com/posit-dev/ggsql.git",
#> "ssh_url": "git@github.com:posit-dev/ggsql.git",
#> "clone_url": "https://github.com/posit-dev/ggsql.git",
#> "svn_url": "https://github.com/posit-dev/ggsql",
#> "homepage": "http://ggsql.org/",
#> "size": 175507,
#> "stargazers_count": 487,
#> "watchers_count": 487,
#> "language": "Rust",
#> "has_issues": true,
#> "has_projects": true,
#> "has_downloads": true,
#> "has_wiki": true,
#> "has_pages": true,
#> "has_discussions": false,
#> "forks_count": 22,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 63,
#> "license": {
#> "key": "mit",
#> "name": "MIT License",
#> "spdx_id": "MIT",
#> "url": "https://api.github.com/licenses/mit",
#> "node_id": "MDc6TGljZW5zZTEz"
#> },
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "has_pull_requests": true,
#> "pull_request_creation_policy": "all",
#> "topics": [],
#> "visibility": "public",
#> "forks": 22,
#> "open_issues": 63,
#> "watchers": 487,
#> "default_branch": "main",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> },
#> {
#> "id": 390115983,
#> "node_id": "MDEwOlJlcG9zaXRvcnkzOTAxMTU5ODM=",
#> "name": "py-shiny",
#> "full_name": "posit-dev/py-shiny",
#> "private": false,
#> "owner": {
#> "login": "posit-dev",
#> "id": 107264312,
#> "node_id": "O_kgDOBmS5OA",
#> "avatar_url": "https://avatars.githubusercontent.com/u/107264312?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/posit-dev",
#> "html_url": "https://github.com/posit-dev",
#> "followers_url": "https://api.github.com/users/posit-dev/followers",
#> "following_url": "https://api.github.com/users/posit-dev/following{/other_user}",
#> "gists_url": "https://api.github.com/users/posit-dev/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/posit-dev/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/posit-dev/subscriptions",
#> "organizations_url": "https://api.github.com/users/posit-dev/orgs",
#> "repos_url": "https://api.github.com/users/posit-dev/repos",
#> "events_url": "https://api.github.com/users/posit-dev/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/posit-dev/received_events",
#> "type": "Organization",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/posit-dev/py-shiny",
#> "description": "Shiny for Python",
#> "fork": false,
#> "url": "https://api.github.com/repos/posit-dev/py-shiny",
#> "forks_url": "https://api.github.com/repos/posit-dev/py-shiny/forks",
#> "keys_url": "https://api.github.com/repos/posit-dev/py-shiny/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/posit-dev/py-shiny/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/posit-dev/py-shiny/teams",
#> "hooks_url": "https://api.github.com/repos/posit-dev/py-shiny/hooks",
#> "issue_events_url": "https://api.github.com/repos/posit-dev/py-shiny/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/posit-dev/py-shiny/events",
#> "assignees_url": "https://api.github.com/repos/posit-dev/py-shiny/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/posit-dev/py-shiny/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/posit-dev/py-shiny/tags",
#> "blobs_url": "https://api.github.com/repos/posit-dev/py-shiny/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/posit-dev/py-shiny/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/posit-dev/py-shiny/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/posit-dev/py-shiny/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/posit-dev/py-shiny/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/posit-dev/py-shiny/languages",
#> "stargazers_url": "https://api.github.com/repos/posit-dev/py-shiny/stargazers",
#> "contributors_url": "https://api.github.com/repos/posit-dev/py-shiny/contributors",
#> "subscribers_url": "https://api.github.com/repos/posit-dev/py-shiny/subscribers",
#> "subscription_url": "https://api.github.com/repos/posit-dev/py-shiny/subscription",
#> "commits_url": "https://api.github.com/repos/posit-dev/py-shiny/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/posit-dev/py-shiny/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/posit-dev/py-shiny/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/posit-dev/py-shiny/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/posit-dev/py-shiny/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/posit-dev/py-shiny/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/posit-dev/py-shiny/merges",
#> "archive_url": "https://api.github.com/repos/posit-dev/py-shiny/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/posit-dev/py-shiny/downloads",
#> "issues_url": "https://api.github.com/repos/posit-dev/py-shiny/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/posit-dev/py-shiny/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/posit-dev/py-shiny/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/posit-dev/py-shiny/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/posit-dev/py-shiny/labels{/name}",
#> "releases_url": "https://api.github.com/repos/posit-dev/py-shiny/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/posit-dev/py-shiny/deployments",
#> "created_at": "2021-07-27T20:19:49Z",
#> "updated_at": "2026-06-05T07:47:03Z",
#> "pushed_at": "2026-06-03T20:13:16Z",
#> "git_url": "git://github.com/posit-dev/py-shiny.git",
#> "ssh_url": "git@github.com:posit-dev/py-shiny.git",
#> "clone_url": "https://github.com/posit-dev/py-shiny.git",
#> "svn_url": "https://github.com/posit-dev/py-shiny",
#> "homepage": "https://shiny.posit.co/py/",
#> "size": 30411,
#> "stargazers_count": 1722,
#> "watchers_count": 1722,
#> "language": "Python",
#> "has_issues": true,
#> "has_projects": true,
#> "has_downloads": true,
#> "has_wiki": true,
#> "has_pages": true,
#> "has_discussions": true,
#> "forks_count": 126,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 455,
#> "license": {
#> "key": "mit",
#> "name": "MIT License",
#> "spdx_id": "MIT",
#> "url": "https://api.github.com/licenses/mit",
#> "node_id": "MDc6TGljZW5zZTEz"
#> },
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "has_pull_requests": true,
#> "pull_request_creation_policy": "all",
#> "topics": [],
#> "visibility": "public",
#> "forks": 126,
#> "open_issues": 455,
#> "watchers": 1722,
#> "default_branch": "main",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> }
#> ]
if (FALSE) {
## Create a repository, needs a token (see gh_token())
gh("POST /user/repos", name = "foobar")
}
## Issues of a repository
gh("/repos/hadley/dplyr/issues")
#> [
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7844",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7844/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7844/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7844/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7844",
#> "id": 4601342463,
#> "node_id": "PR_kwDOAGIUpc7jU7NL",
#> "number": 7844,
#> "title": "docs: clarify between comparison semantics",
#> "user": {
#> "login": "LeonidasZhak",
#> "id": 70497898,
#> "node_id": "MDQ6VXNlcjcwNDk3ODk4",
#> "avatar_url": "https://avatars.githubusercontent.com/u/70497898?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/LeonidasZhak",
#> "html_url": "https://github.com/LeonidasZhak",
#> "followers_url": "https://api.github.com/users/LeonidasZhak/followers",
#> "following_url": "https://api.github.com/users/LeonidasZhak/following{/other_user}",
#> "gists_url": "https://api.github.com/users/LeonidasZhak/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/LeonidasZhak/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/LeonidasZhak/subscriptions",
#> "organizations_url": "https://api.github.com/users/LeonidasZhak/orgs",
#> "repos_url": "https://api.github.com/users/LeonidasZhak/repos",
#> "events_url": "https://api.github.com/users/LeonidasZhak/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/LeonidasZhak/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-06-06T01:42:33Z",
#> "updated_at": "2026-06-06T01:42:33Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7844",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7844",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7844.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7844.patch",
#> "merged_at": {}
#> },
#> "body": "Fixes #7702.\n\n## Summary\n- describe local `between()` comparisons as similar to `x >= left & x <= right`, rather than an exact shortcut\n- mention that local comparisons use vctrs after common-type casting\n- clarify that character strings are not parsed as dates or date-times\n\n## Checks\n- `Rscript -e 'tools::checkRd(\"man/between.Rd\")'`\\n- `git diff --check`\\n- `R CMD build --no-build-vignettes .` was attempted, but this local machine has `rlang` 1.1.6 loaded while dplyr now requires >= 1.1.7",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7844/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7844/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7843",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7843/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7843/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7843/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7843",
#> "id": 4578141971,
#> "node_id": "I_kwDOAGIUpc8AAAABEODnEw",
#> "number": 7843,
#> "title": "Improve error message for trailing comma in `across()`",
#> "user": {
#> "login": "DanChaltiel",
#> "id": 15105152,
#> "node_id": "MDQ6VXNlcjE1MTA1MTUy",
#> "avatar_url": "https://avatars.githubusercontent.com/u/15105152?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DanChaltiel",
#> "html_url": "https://github.com/DanChaltiel",
#> "followers_url": "https://api.github.com/users/DanChaltiel/followers",
#> "following_url": "https://api.github.com/users/DanChaltiel/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DanChaltiel/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DanChaltiel/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DanChaltiel/subscriptions",
#> "organizations_url": "https://api.github.com/users/DanChaltiel/orgs",
#> "repos_url": "https://api.github.com/users/DanChaltiel/repos",
#> "events_url": "https://api.github.com/users/DanChaltiel/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DanChaltiel/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-06-03T08:25:13Z",
#> "updated_at": "2026-06-03T08:25:13Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Hi,\n\nThis is a rather minor issue, but I spent some time scratching my head over it, so I thought it could be worth reporting as a possible error-message improvement.\n\nWhen leaving a trailing comma in `across()`, the resulting error mentions an unused `alist()` argument:\n\n``` r\nSys.setenv(LANGUAGE=\"en\")\nlibrary(dplyr)\nmtcars %>%\n mutate(across(am, \\(.x) .x+1, ))\n#> Error in `mutate()`:\n#> ℹ In argument: `across(am, function(.x) .x + 1, )`.\n#> Caused by error in `across()`:\n#> ! Can't compute column `am`.\n#> Caused by error in `fn()`:\n#> ! unused argument (alist())\n```\n\n<sup>Created on 2026-06-03 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\nIn this short example, the trailing comma is easy to spot. However, with a longer function, it is much less noticeable in the trace, and I found the `alist()` message very hard to link to the actual problem.\n\nMaybe there is a way to catch it and rewrite it somehow?\n\nThanks!",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7843/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7843/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7838",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7838/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7838/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7838/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7838",
#> "id": 4470572514,
#> "node_id": "I_kwDOAGIUpc8AAAABCneF4g",
#> "number": 7838,
#> "title": "Should we have AI specific warnings?",
#> "user": {
#> "login": "DavisVaughan",
#> "id": 19150088,
#> "node_id": "MDQ6VXNlcjE5MTUwMDg4",
#> "avatar_url": "https://avatars.githubusercontent.com/u/19150088?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DavisVaughan",
#> "html_url": "https://github.com/DavisVaughan",
#> "followers_url": "https://api.github.com/users/DavisVaughan/followers",
#> "following_url": "https://api.github.com/users/DavisVaughan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DavisVaughan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DavisVaughan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DavisVaughan/subscriptions",
#> "organizations_url": "https://api.github.com/users/DavisVaughan/orgs",
#> "repos_url": "https://api.github.com/users/DavisVaughan/repos",
#> "events_url": "https://api.github.com/users/DavisVaughan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DavisVaughan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-05-18T15:55:34Z",
#> "updated_at": "2026-05-18T15:55:34Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Consider this warning message about multiple matches in joins\n\nhttps://github.com/tidyverse/dplyr/blob/770ad50f884ebb78a479d78b79d0ba2ec0fb0c53/R/join-rows.R#L244-L252\n\nWhen an AI reads this after executing the code, it tends to aggressively avoid warnings and will just insert `relationship = \"many-to-many\"` to silence the warning.\n\nBut this is bad! Awful even!\n\nThe whole point of this warning is to force the user to _question their own assumptions_ and explicitly make this decision for themselves.\n\nWould it be useful for us to conditionally add a bullet to warnings like this one, via something like `testthat:::is_llm()`, so that when Claude runs this code itself, it sees the AI specific version of the warning which would read something like\n\n\n> i = if (is_llm()) \"AI Systems - Never remove this warning on your own by setting `relationship` for the user. Instead stop and prompt the user to investigate whether or not this is their actual intention\"\n\nWe would use this sparingly, for warnings that are really for cases with contextual semantic meaning, not syntax\n\n(I don't currently have any other examples)",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7838/reactions",
#> "total_count": 1,
#> "+1": 1,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7838/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7835",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7835/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7835/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7835/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7835",
#> "id": 4433942873,
#> "node_id": "PR_kwDOAGIUpc7a6mOW",
#> "number": 7835,
#> "title": "Fix #7773 and #7785: Improve count() and across()",
#> "user": {
#> "login": "mrv0for0vandeta",
#> "id": 197428919,
#> "node_id": "U_kgDOC8SGtw",
#> "avatar_url": "https://avatars.githubusercontent.com/u/197428919?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/mrv0for0vandeta",
#> "html_url": "https://github.com/mrv0for0vandeta",
#> "followers_url": "https://api.github.com/users/mrv0for0vandeta/followers",
#> "following_url": "https://api.github.com/users/mrv0for0vandeta/following{/other_user}",
#> "gists_url": "https://api.github.com/users/mrv0for0vandeta/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/mrv0for0vandeta/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/mrv0for0vandeta/subscriptions",
#> "organizations_url": "https://api.github.com/users/mrv0for0vandeta/orgs",
#> "repos_url": "https://api.github.com/users/mrv0for0vandeta/repos",
#> "events_url": "https://api.github.com/users/mrv0for0vandeta/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/mrv0for0vandeta/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-05-13T01:38:56Z",
#> "updated_at": "2026-05-13T02:10:30Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": true,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7835",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7835",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7835.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7835.patch",
#> "merged_at": {}
#> },
#> "body": {},
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7835/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7835/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7831",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7831/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7831/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7831/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7831",
#> "id": 4238079969,
#> "node_id": "I_kwDOAGIUpc78m_fh",
#> "number": 7831,
#> "title": "FR: `if_any(.empty=\"keep\")`",
#> "user": {
#> "login": "DanChaltiel",
#> "id": 15105152,
#> "node_id": "MDQ6VXNlcjE1MTA1MTUy",
#> "avatar_url": "https://avatars.githubusercontent.com/u/15105152?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DanChaltiel",
#> "html_url": "https://github.com/DanChaltiel",
#> "followers_url": "https://api.github.com/users/DanChaltiel/followers",
#> "following_url": "https://api.github.com/users/DanChaltiel/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DanChaltiel/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DanChaltiel/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DanChaltiel/subscriptions",
#> "organizations_url": "https://api.github.com/users/DanChaltiel/orgs",
#> "repos_url": "https://api.github.com/users/DanChaltiel/repos",
#> "events_url": "https://api.github.com/users/DanChaltiel/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DanChaltiel/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-04-10T09:27:08Z",
#> "updated_at": "2026-04-10T09:27:08Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Hi,\n\nSince https://github.com/tidyverse/dplyr/issues/7059, zero-length selection in `if_any()` yields an empty dataframe:\n\n``` r\nlibrary(dplyr)\nselected_cols = \"mpg\"\nmtcars |>\n filter(if_any(any_of(selected_cols), ~ .x>20)) |>\n nrow()\n#> [1] 14\n\nselected_cols = character(0)\nmtcars |>\n filter(if_any(any_of(selected_cols), ~ .x>20)) |>\n nrow()\n#> [1] 0\n```\n\n<sup>Created on 2026-04-10 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\nThis behaviour is consistent with the current definition of `if_any()`, but in some programmatic workflows it would be useful to have an option to keep all rows when the selection is empty.\n\nA typical use case is:\n\n- define a predicate\n- define a set of columns on which to apply it\n- filter rows failing that predicate on any selected column\n\nIn that context, when no columns are selected, it can be natural to interpret this as \"there is nothing to check\", so all rows should be kept rather than discarded.\n\nFor example, something like `.empty= \"keep\"` could be useful, with the current behaviour remaining the default (`.empty= \"discard\"`).\n\nThere is some kind of workaround, but I don't find it very satisfying: \n```r\nmtcars |>\n filter(\n length(selected_cols) == 0 ||\n if_any(any_of(selected_cols), ~ .x > 20)\n ) |>\n nrow()\n#> [1] 32\n```\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7831/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7831/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7829",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7829/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7829/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7829/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7829",
#> "id": 4211899384,
#> "node_id": "PR_kwDOAGIUpc7QNxIE",
#> "number": 7829,
#> "title": "Use dev roxygen2 + doc listing",
#> "user": {
#> "login": "hadley",
#> "id": 4196,
#> "node_id": "MDQ6VXNlcjQxOTY=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/4196?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/hadley",
#> "html_url": "https://github.com/hadley",
#> "followers_url": "https://api.github.com/users/hadley/followers",
#> "following_url": "https://api.github.com/users/hadley/following{/other_user}",
#> "gists_url": "https://api.github.com/users/hadley/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/hadley/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/hadley/subscriptions",
#> "organizations_url": "https://api.github.com/users/hadley/orgs",
#> "repos_url": "https://api.github.com/users/hadley/repos",
#> "events_url": "https://api.github.com/users/hadley/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/hadley/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-04-06T13:28:35Z",
#> "updated_at": "2026-04-07T12:57:45Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7829",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7829",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7829.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7829.patch",
#> "merged_at": {}
#> },
#> "body": "* Re-run with dev roxygen2 (lots of diffs due to consist link generation)\r\n* Switch to using `doclisting::methods_list()`\r\n* Fix issue with upcoming dbplyr release",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7829/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7829/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7822",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7822/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7822/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7822/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7822",
#> "id": 4121797214,
#> "node_id": "I_kwDOAGIUpc71raJe",
#> "number": 7822,
#> "title": "Should `cbind` and `rbind` be mentionned in dplyr <-> base R?",
#> "user": {
#> "login": "TanguyBarthelemy",
#> "id": 112711017,
#> "node_id": "U_kgDOBrfVaQ",
#> "avatar_url": "https://avatars.githubusercontent.com/u/112711017?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/TanguyBarthelemy",
#> "html_url": "https://github.com/TanguyBarthelemy",
#> "followers_url": "https://api.github.com/users/TanguyBarthelemy/followers",
#> "following_url": "https://api.github.com/users/TanguyBarthelemy/following{/other_user}",
#> "gists_url": "https://api.github.com/users/TanguyBarthelemy/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/TanguyBarthelemy/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/TanguyBarthelemy/subscriptions",
#> "organizations_url": "https://api.github.com/users/TanguyBarthelemy/orgs",
#> "repos_url": "https://api.github.com/users/TanguyBarthelemy/repos",
#> "events_url": "https://api.github.com/users/TanguyBarthelemy/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/TanguyBarthelemy/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-03-23T15:36:28Z",
#> "updated_at": "2026-03-23T15:36:28Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Is it possible to include the `bind_cols` and `bind_rows` functions in the R base and tidyverse comparison vignette?\n\nhttps://github.com/tidyverse/dplyr/blob/main/vignettes/base.Rmd\n\nI think these are widely used functions and that including them would be beneficial (even if their uses may differ).",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7822/reactions",
#> "total_count": 3,
#> "+1": 3,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7822/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7817",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7817/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7817/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7817/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7817",
#> "id": 4047896689,
#> "node_id": "PR_kwDOAGIUpc7JMQNe",
#> "number": 7817,
#> "title": "add examples for `if_any()`/`if_all()` to `filter()` docs",
#> "user": {
#> "login": "tanho63",
#> "id": 38083823,
#> "node_id": "MDQ6VXNlcjM4MDgzODIz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/38083823?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/tanho63",
#> "html_url": "https://github.com/tanho63",
#> "followers_url": "https://api.github.com/users/tanho63/followers",
#> "following_url": "https://api.github.com/users/tanho63/following{/other_user}",
#> "gists_url": "https://api.github.com/users/tanho63/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/tanho63/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/tanho63/subscriptions",
#> "organizations_url": "https://api.github.com/users/tanho63/orgs",
#> "repos_url": "https://api.github.com/users/tanho63/repos",
#> "events_url": "https://api.github.com/users/tanho63/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/tanho63/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-03-09T21:02:34Z",
#> "updated_at": "2026-03-10T17:00:36Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7817",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7817",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7817.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7817.patch",
#> "merged_at": {}
#> },
#> "body": "Closes #7816 ",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7817/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7817/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7816",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7816/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7816/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7816/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7816",
#> "id": 4046784550,
#> "node_id": "I_kwDOAGIUpc7xNQgm",
#> "number": 7816,
#> "title": "`filter()` documentation should refer to `if_any()` or `if_all()` for across-like filtering",
#> "user": {
#> "login": "tanho63",
#> "id": 38083823,
#> "node_id": "MDQ6VXNlcjM4MDgzODIz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/38083823?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/tanho63",
#> "html_url": "https://github.com/tanho63",
#> "followers_url": "https://api.github.com/users/tanho63/followers",
#> "following_url": "https://api.github.com/users/tanho63/following{/other_user}",
#> "gists_url": "https://api.github.com/users/tanho63/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/tanho63/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/tanho63/subscriptions",
#> "organizations_url": "https://api.github.com/users/tanho63/orgs",
#> "repos_url": "https://api.github.com/users/tanho63/repos",
#> "events_url": "https://api.github.com/users/tanho63/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/tanho63/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 2,
#> "created_at": "2026-03-09T17:03:42Z",
#> "updated_at": "2026-03-09T20:58:12Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Hiya! Was just explaining to someone else how to resolve bugs caused by the [deprecation of using across() in filter()](https://github.com/tidyverse/dplyr/pull/7765) and noticed that `if_any()/if_all()` are not mentioned/explained in the `filter()` docs, should there be some mention of using this (in \"Useful Filter Functions\" and/or in the examples?)\n\nHappy to contribute a PR if desired",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7816/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7816/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7813",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7813/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7813/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7813/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7813",
#> "id": 3971455173,
#> "node_id": "PR_kwDOAGIUpc7FUBq-",
#> "number": 7813,
#> "title": "Add ellipsis to `tally()` and `add_tally()`",
#> "user": {
#> "login": "Copilot",
#> "id": 198982749,
#> "node_id": "BOT_kgDOC9w8XQ",
#> "avatar_url": "https://avatars.githubusercontent.com/in/1143301?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/Copilot",
#> "html_url": "https://github.com/apps/copilot-swe-agent",
#> "followers_url": "https://api.github.com/users/Copilot/followers",
#> "following_url": "https://api.github.com/users/Copilot/following{/other_user}",
#> "gists_url": "https://api.github.com/users/Copilot/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/Copilot/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/Copilot/subscriptions",
#> "organizations_url": "https://api.github.com/users/Copilot/orgs",
#> "repos_url": "https://api.github.com/users/Copilot/repos",
#> "events_url": "https://api.github.com/users/Copilot/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/Copilot/received_events",
#> "type": "Bot",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [
#> {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> {
#> "login": "Copilot",
#> "id": 198982749,
#> "node_id": "BOT_kgDOC9w8XQ",
#> "avatar_url": "https://avatars.githubusercontent.com/in/1143301?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/Copilot",
#> "html_url": "https://github.com/apps/copilot-swe-agent",
#> "followers_url": "https://api.github.com/users/Copilot/followers",
#> "following_url": "https://api.github.com/users/Copilot/following{/other_user}",
#> "gists_url": "https://api.github.com/users/Copilot/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/Copilot/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/Copilot/subscriptions",
#> "organizations_url": "https://api.github.com/users/Copilot/orgs",
#> "repos_url": "https://api.github.com/users/Copilot/repos",
#> "events_url": "https://api.github.com/users/Copilot/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/Copilot/received_events",
#> "type": "Bot",
#> "user_view_type": "public",
#> "site_admin": false
#> }
#> ],
#> "milestone": {},
#> "comments": 4,
#> "created_at": "2026-02-21T06:29:33Z",
#> "updated_at": "2026-02-22T07:06:15Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": true,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7813",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7813",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7813.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7813.patch",
#> "merged_at": {}
#> },
#> "body": "- [x] Revert to original state to address reviewer feedback\n- [x] Move dots checking from method to generic using collector function pattern\n- [x] `tally()` generic: check dots via `collect_tally_args()`, then call `tally_dispatch()` which dispatches via `UseMethod(\"tally\")`\n- [x] `add_tally()`: same pattern, then call `add_tally_impl()`\n- [x] Use R's built-in argument matching in `collect_tally_args()` (old signature without `x`), emit deprecation warnings per matched arg\n- [x] Handle `wt` NSE properly via `enquo()` in collector\n- [x] `count.data.frame` / `add_count_impl` bypass dots checking, call dispatch/impl directly\n- [x] Fix error ownership: add `dplyr_local_error_call()` in generics, use `dplyr_error_call()` in methods\n- [x] Update snapshots: errors from `count()` path now correctly show `count()` not `tally()`\n- [x] Update tests for all combinations of named/unnamed args\n- [ ] CI verification\n\n<!-- START COPILOT ORIGINAL PROMPT -->\n\n\n\n<details>\n\n<summary>Original prompt<\/summary>\n\n> \n> ----\n> \n> *This section details on the original issue you should resolve*\n> \n> <issue_title>Add ellipsis to `tally()` and `add_tally()`<\/issue_title>\n> <issue_description>The `wt`, `sort` and `name` arguments should be behind an ellipsis, like for `count()` and similarly for other verbs.\n> \n> Agent instructions:\n> \n> Add an ellipsis to the generic and to the method. Ensure that users still can pass unnamed arguments, with a compatibility warning. For this, implement a pattern like\n> \n> ```\n> tally <- function(x, ..., wt = NULL ......) {\n> # Add compat code that checks ... and converts to regular arguments\n> tally_(x, wt = !!wt, sort = sort, name = name)\n> }\n> tally_ <- function(.....) {\n> UseMethod(\"tally\")\n> }\n> ```\n> \n> Add comprehensive tests for all combinations of named and unnamed args, perhaps with a tester class that has a `tally()` method that just returns the args.<\/issue_description>\n> \n> ## Comments on the Issue (you are @copilot in this section)\n> \n> <comments>\n> <\/comments>\n> \n\n\n<\/details>\n\n\n\n<!-- START COPILOT CODING AGENT SUFFIX -->\n\n- Fixes tidyverse/dplyr#7812\n\n<!-- START COPILOT CODING AGENT TIPS -->\n---\n\n💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7813/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7813/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7812",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7812/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7812/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7812/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7812",
#> "id": 3971454894,
#> "node_id": "I_kwDOAGIUpc7st5eu",
#> "number": 7812,
#> "title": "Add ellipsis to `tally()` and `add_tally()`",
#> "user": {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [
#> {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> {
#> "login": "Copilot",
#> "id": 198982749,
#> "node_id": "BOT_kgDOC9w8XQ",
#> "avatar_url": "https://avatars.githubusercontent.com/in/1143301?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/Copilot",
#> "html_url": "https://github.com/apps/copilot-swe-agent",
#> "followers_url": "https://api.github.com/users/Copilot/followers",
#> "following_url": "https://api.github.com/users/Copilot/following{/other_user}",
#> "gists_url": "https://api.github.com/users/Copilot/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/Copilot/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/Copilot/subscriptions",
#> "organizations_url": "https://api.github.com/users/Copilot/orgs",
#> "repos_url": "https://api.github.com/users/Copilot/repos",
#> "events_url": "https://api.github.com/users/Copilot/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/Copilot/received_events",
#> "type": "Bot",
#> "user_view_type": "public",
#> "site_admin": false
#> }
#> ],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-02-21T06:29:27Z",
#> "updated_at": "2026-02-21T06:29:27Z",
#> "closed_at": {},
#> "assignee": {
#> "login": "Copilot",
#> "id": 198982749,
#> "node_id": "BOT_kgDOC9w8XQ",
#> "avatar_url": "https://avatars.githubusercontent.com/in/1143301?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/Copilot",
#> "html_url": "https://github.com/apps/copilot-swe-agent",
#> "followers_url": "https://api.github.com/users/Copilot/followers",
#> "following_url": "https://api.github.com/users/Copilot/following{/other_user}",
#> "gists_url": "https://api.github.com/users/Copilot/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/Copilot/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/Copilot/subscriptions",
#> "organizations_url": "https://api.github.com/users/Copilot/orgs",
#> "repos_url": "https://api.github.com/users/Copilot/repos",
#> "events_url": "https://api.github.com/users/Copilot/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/Copilot/received_events",
#> "type": "Bot",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "The `wt`, `sort` and `name` arguments should be behind an ellipsis, like for `count()` and similarly for other verbs.\n\nAgent instructions:\n\nAdd an ellipsis to the generic and to the method. Ensure that users still can pass unnamed arguments, with a compatibility warning. For this, implement a pattern like\n\n```\ntally <- function(x, ..., wt = NULL ......) {\n # Add compat code that checks ... and converts to regular arguments\n tally_(x, wt = !!wt, sort = sort, name = name)\n}\ntally_ <- function(.....) {\n UseMethod(\"tally\")\n}\n```\n\nAdd comprehensive tests for all combinations of named and unnamed args, perhaps with a tester class that has a `tally()` method that just returns the args.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7812/reactions",
#> "total_count": 1,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 1
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7812/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7807",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7807/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7807/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7807/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7807",
#> "id": 3917366678,
#> "node_id": "PR_kwDOAGIUpc7CiKEv",
#> "number": 7807,
#> "title": "Prototype of webr on the landing page",
#> "user": {
#> "login": "DavisVaughan",
#> "id": 19150088,
#> "node_id": "MDQ6VXNlcjE5MTUwMDg4",
#> "avatar_url": "https://avatars.githubusercontent.com/u/19150088?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DavisVaughan",
#> "html_url": "https://github.com/DavisVaughan",
#> "followers_url": "https://api.github.com/users/DavisVaughan/followers",
#> "following_url": "https://api.github.com/users/DavisVaughan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DavisVaughan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DavisVaughan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DavisVaughan/subscriptions",
#> "organizations_url": "https://api.github.com/users/DavisVaughan/orgs",
#> "repos_url": "https://api.github.com/users/DavisVaughan/repos",
#> "events_url": "https://api.github.com/users/DavisVaughan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DavisVaughan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2026-02-09T17:28:38Z",
#> "updated_at": "2026-02-10T15:50:41Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": true,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7807",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7807",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7807.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7807.patch",
#> "merged_at": {}
#> },
#> "body": "- [ ] Could we add some kind of Plausible integration?\r\n- [ ] Fonts are hardcoded to `font-family: 'Source Code Pro'`. Should it be `var(--bs-font-monospace)` in `webr.css`? Would that just work?\r\n- [ ] Can this be templated enough to live as `usethis::use_pkgdown_webr()`?\r\n - Package name is easy to extract\r\n - Sample code would have to be provided somewhere for usethis to inject into the template. It would be package specific.\r\n- [x] Can we get the javascript out of `_pkgdown.yml` and have `pkgdown::preview_site()` still work? Because it doesn't start a real local server and only serves from the file system, we get CORS security errors when trying to run a script on a `file:///` path. Is there another way?\r\n- [x] I don't have a clue what its going to do for plots\r\n- [x] Make sure the \"webr can't load\" case is decently handled so we don't confuse people if that happens\r\n- [ ] Should `Try it` be a permanent section in the README, even on the GitHub README? It could link to the website and tell you to go there to try it live. Right now the section doesn't show up at all in the GitHub README, but that makes it float kind of awkwardly in your `README.Rmd`.\r\n- [x] Is `in_header` the right place for this? Is that being pulled into _every_ subpage?\r\n\r\n\r\nhttps://github.com/user-attachments/assets/f2011dfc-708a-4fdc-9071-ee6c6f4a64ae\r\n\r\n\r\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7807/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7807/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7806",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7806/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7806/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7806/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7806",
#> "id": 3911593590,
#> "node_id": "I_kwDOAGIUpc7pJi52",
#> "number": 7806,
#> "title": "Argument inconsistency between `case_when()` and `recode_values()`/`replace_values()`",
#> "user": {
#> "login": "sonicseamus",
#> "id": 9063807,
#> "node_id": "MDQ6VXNlcjkwNjM4MDc=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/9063807?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/sonicseamus",
#> "html_url": "https://github.com/sonicseamus",
#> "followers_url": "https://api.github.com/users/sonicseamus/followers",
#> "following_url": "https://api.github.com/users/sonicseamus/following{/other_user}",
#> "gists_url": "https://api.github.com/users/sonicseamus/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/sonicseamus/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/sonicseamus/subscriptions",
#> "organizations_url": "https://api.github.com/users/sonicseamus/orgs",
#> "repos_url": "https://api.github.com/users/sonicseamus/repos",
#> "events_url": "https://api.github.com/users/sonicseamus/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/sonicseamus/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 4,
#> "created_at": "2026-02-07T23:54:57Z",
#> "updated_at": "2026-04-23T12:16:26Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Hello, I am excited about the new dplyr verbs `recode_values()` and `replace_values()` and have been experimenting with working them into my code. However, when I was writing code, I noticed that I naturally wrote `.default =` as an argument for `recode_values()` and was surprised not to get an autocomplete. After checking the documentation, **I realized that the `.default`, `.ptype`, and `.unmatched` arguments do not have period prefixes for these new verbs, even though they do for `case_when()`.**\n\nI don't really care whether there's the prefix or not (I'm not up on my dplyr lore enough to know what qualifies an argument for having a `.` prefix), but **can we have consistency in the arguments across these three verbs?** This may well have been an intentional choice, in which case I'm curious what the rationale was! And am here to report that it was confusing, at least for this useR.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7806/reactions",
#> "total_count": 2,
#> "+1": 2,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7806/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7803",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7803/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7803/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7803/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7803",
#> "id": 3896144615,
#> "node_id": "PR_kwDOAGIUpc7Bch_C",
#> "number": 7803,
#> "title": "chore: update readme to use `.by` instead of `group_by()`",
#> "user": {
#> "login": "wurli",
#> "id": 17475731,
#> "node_id": "MDQ6VXNlcjE3NDc1NzMx",
#> "avatar_url": "https://avatars.githubusercontent.com/u/17475731?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/wurli",
#> "html_url": "https://github.com/wurli",
#> "followers_url": "https://api.github.com/users/wurli/followers",
#> "following_url": "https://api.github.com/users/wurli/following{/other_user}",
#> "gists_url": "https://api.github.com/users/wurli/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/wurli/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/wurli/subscriptions",
#> "organizations_url": "https://api.github.com/users/wurli/orgs",
#> "repos_url": "https://api.github.com/users/wurli/repos",
#> "events_url": "https://api.github.com/users/wurli/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/wurli/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2026-02-04T11:49:18Z",
#> "updated_at": "2026-02-04T15:21:23Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7803",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7803",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7803.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7803.patch",
#> "merged_at": {}
#> },
#> "body": "Please feel free to reject this if you prefer to keep as-is. Just thought the upcoming release might be a nice time to make this change since `.by` is no longer experimental :) \r\n\r\nThanks for the great work on the latest release!",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7803/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7803/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7792",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7792/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7792/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7792/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7792",
#> "id": 3824228200,
#> "node_id": "I_kwDOAGIUpc7j8Rdo",
#> "number": 7792,
#> "title": "no error or warning on incorrect usage of `between()`",
#> "user": {
#> "login": "EmilHvitfeldt",
#> "id": 14034784,
#> "node_id": "MDQ6VXNlcjE0MDM0Nzg0",
#> "avatar_url": "https://avatars.githubusercontent.com/u/14034784?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/EmilHvitfeldt",
#> "html_url": "https://github.com/EmilHvitfeldt",
#> "followers_url": "https://api.github.com/users/EmilHvitfeldt/followers",
#> "following_url": "https://api.github.com/users/EmilHvitfeldt/following{/other_user}",
#> "gists_url": "https://api.github.com/users/EmilHvitfeldt/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/EmilHvitfeldt/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/EmilHvitfeldt/subscriptions",
#> "organizations_url": "https://api.github.com/users/EmilHvitfeldt/orgs",
#> "repos_url": "https://api.github.com/users/EmilHvitfeldt/repos",
#> "events_url": "https://api.github.com/users/EmilHvitfeldt/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/EmilHvitfeldt/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 2,
#> "created_at": "2026-01-17T02:01:21Z",
#> "updated_at": "2026-03-20T02:18:30Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "The main title of the function reads \"Detect where values fall in a specified range\" which, if you don't read further, suggest that the following code could also be okay. Which it of cause isn't because it is shorthand for `x >= left & x <= right`\n\n``` r\ndplyr::between(4, 10, 2)\n#> [1] FALSE\n```\n\nWould it be unreasonably to ask that a warning/error is thrown if `right < left`? I would imagine it would catch some issues for people",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7792/reactions",
#> "total_count": 2,
#> "+1": 2,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7792/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7787",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7787/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7787/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7787/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7787",
#> "id": 3779408081,
#> "node_id": "I_kwDOAGIUpc7hRTDR",
#> "number": 7787,
#> "title": "dplyr verbs remove attributes of classed columns",
#> "user": {
#> "login": "DanChaltiel",
#> "id": 15105152,
#> "node_id": "MDQ6VXNlcjE1MTA1MTUy",
#> "avatar_url": "https://avatars.githubusercontent.com/u/15105152?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DanChaltiel",
#> "html_url": "https://github.com/DanChaltiel",
#> "followers_url": "https://api.github.com/users/DanChaltiel/followers",
#> "following_url": "https://api.github.com/users/DanChaltiel/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DanChaltiel/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DanChaltiel/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DanChaltiel/subscriptions",
#> "organizations_url": "https://api.github.com/users/DanChaltiel/orgs",
#> "repos_url": "https://api.github.com/users/DanChaltiel/repos",
#> "events_url": "https://api.github.com/users/DanChaltiel/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DanChaltiel/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-01-04T16:24:45Z",
#> "updated_at": "2026-03-24T14:35:50Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "## Problem description\n\nHi, \n\nThis issue is based on https://github.com/tidyverse/dplyr/issues/7630, which was closed.\n\nThe initial problem was that `filter()` removes labels from glue variables.\nThe proposed solution was to use `haven::labelled()`, which works for simple, atomic classes like `glue`.\nUnfortunately, it does not work for more complex ones.\n\nThis issue could belong in multiple repositories, so please move it as you think is best: \n- `dplyr`, if verbs should restore attributes after using `vctrs`\n- `vctrs`, if the problem lies somewhere in the vectorization process\n\n\n### Case 1: `difftime()`\n\nIf one column is a classed vector, like a `difftime` which is used a lot, `haven::labelled()` will drop the class and attributes (like `units` here), returning a plain labelled double, shown as `<dbl+lbl>`, instead of a difftime, or `drtn` in a tibble.\n\nSo we have two options:\n- we use the base system with `attr(label=\"\")` and dplyr verbs are not usable, \n- or we use the `haven` system and the classed columns are not usable.\n\n``` r\nlibrary(tidyverse)\ntest = tibble(\n time_attr_lab = Sys.Date()-Sys.Date()+1,\n time_haven_lab = time_attr_lab\n)\ntest$time_haven_lab = haven::labelled(test$time_haven_lab, label=\"haven difftime\")\nattr(test$time_attr_lab, \"label\") = \"attr difftime\"\n\n#haven::labelled() drops the class\ndput(test$time_attr_lab)\n#> structure(1, class = \"difftime\", units = \"days\", label = \"attr difftime\")\ndput(test$time_haven_lab)\n#> structure(1, label = \"haven difftime\", class = c(\"haven_labelled\", \"vctrs_vctr\", \"double\"))\n\n#but keeps the label with dplyr verbs\ntest %>% filter(TRUE) %>% labelled::get_variable_labels()\n#> $time_attr_lab\n#> NULL\n#> \n#> $time_haven_lab\n#> [1] \"haven difftime\"\n```\n\n<sup>Created on 2026-03-24 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n\n\n\n\n### Case 2: `survival::Surv()`\n\nIf a column is a Surv object, i.e. a classed matrix, `haven::labelled()` will fail with an error. This is a problem in haven, one that will probably be deemed minor. The 2-row matrix is flattened to a length 4 vector, which doesn't fit the 2-row tibble. Using labelled works fine.\n\n``` r\nlibrary(tidyverse)\ntest = tibble(\n surv = survival::Surv(5:6, event=1:0),\n)\ntest$surv = haven::labelled(test$surv, label=\"Survival\")\n#> Error in `$<-`:\n#> ! Assigned data `haven::labelled(test$surv, label = \"Survival\")` must be\n#> compatible with existing data.\n#> ✖ Existing data has 2 rows.\n#> ✖ Assigned data has 4 rows.\n#> ℹ Only vectors of size 1 are recycled.\n#> Caused by error in `vectbl_recycle_rhs_rows()`:\n#> ! Can't recycle input of size 4 to size 2.\n\ntest %>%\n labelled::set_variable_labels(surv=\"survival\") %>%\n labelled::get_variable_labels()\n#> $surv\n#> [1] \"survival\"\n```\n\n<sup>Created on 2026-03-24 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n## Conclusion\n\nI'm pretty sure this is a regression, as I don't recall experiencing this in previous versions of `dplyr`, although I cannot tell when.\nUnfortunately, this breaks things all over my codebase, as labels are an essential feature for data reporting.\n\nIs there another solution apart from the one from #7630?\nI'm willing to dig into `vctrs` to implement a better labelled class if needed\nOtherwise, would it be possible to restore attributes after using `vctrs` inside `dplyr` verbs?\n\nThank you very much for considering this issue and for your work on this package.\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7787/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7787/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7786",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7786/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7786/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7786/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7786",
#> "id": 3754487277,
#> "node_id": "I_kwDOAGIUpc7fyO3t",
#> "number": 7786,
#> "title": "Stop exporting `data_frame()` and `as_data_frame()` from tibble?",
#> "user": {
#> "login": "olivroy",
#> "id": 52606734,
#> "node_id": "MDQ6VXNlcjUyNjA2NzM0",
#> "avatar_url": "https://avatars.githubusercontent.com/u/52606734?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/olivroy",
#> "html_url": "https://github.com/olivroy",
#> "followers_url": "https://api.github.com/users/olivroy/followers",
#> "following_url": "https://api.github.com/users/olivroy/following{/other_user}",
#> "gists_url": "https://api.github.com/users/olivroy/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/olivroy/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/olivroy/subscriptions",
#> "organizations_url": "https://api.github.com/users/olivroy/orgs",
#> "repos_url": "https://api.github.com/users/olivroy/repos",
#> "events_url": "https://api.github.com/users/olivroy/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/olivroy/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-12-22T16:55:39Z",
#> "updated_at": "2025-12-22T16:55:39Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "they were deprecated in tibble 2.0, (2019) and create a bit of noise in the autocomplete. Removing them from dplyr would be the first step of removing them from tibble.\n\nUnless, it is planned to make them defunct in tibble first, then removing them from both tibble and dplyr at the same time?",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7786/reactions",
#> "total_count": 2,
#> "+1": 2,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7786/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7785",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7785/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7785/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7785/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7785",
#> "id": 3751544003,
#> "node_id": "I_kwDOAGIUpc7fnATD",
#> "number": 7785,
#> "title": "Across gives unclear error when function returns incorrect length output",
#> "user": {
#> "login": "billdenney",
#> "id": 10359931,
#> "node_id": "MDQ6VXNlcjEwMzU5OTMx",
#> "avatar_url": "https://avatars.githubusercontent.com/u/10359931?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/billdenney",
#> "html_url": "https://github.com/billdenney",
#> "followers_url": "https://api.github.com/users/billdenney/followers",
#> "following_url": "https://api.github.com/users/billdenney/following{/other_user}",
#> "gists_url": "https://api.github.com/users/billdenney/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/billdenney/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/billdenney/subscriptions",
#> "organizations_url": "https://api.github.com/users/billdenney/orgs",
#> "repos_url": "https://api.github.com/users/billdenney/repos",
#> "events_url": "https://api.github.com/users/billdenney/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/billdenney/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-12-21T19:58:42Z",
#> "updated_at": "2025-12-21T19:58:42Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "In the example below, the function gives a 2-length result for a 1-length input. (My real case to generate this error involved changing levels for a factor, and the return value for the function was the levels and not the factor variable.)\n\nCan the error message please be improved from \n\n```\n#> ! Can't compute column `A`.\n#> Caused by error in `dplyr_internal_error()`:\n```\n\nTo something indicating that the return value's length is incorrect?\n\n``` r\nlibrary(dplyr)\n#> \n#> Attaching package: 'dplyr'\n#> The following objects are masked from 'package:stats':\n#> \n#> filter, lag\n#> The following objects are masked from 'package:base':\n#> \n#> intersect, setdiff, setequal, union\nd_test <- data.frame(A = 1)\ngive_two <- function(x) {\n 1:2\n}\nmutate(d_test, across(\"A\", give_two))\n#> Error in `mutate()`:\n#> ℹ In argument: `across(\"A\", give_two)`.\n#> Caused by error in `across()`:\n#> ! Can't compute column `A`.\n#> Caused by error in `dplyr_internal_error()`:\n```\n\n<sup>Created on 2025-12-21 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7785/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7785/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7781",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7781/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7781/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7781/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7781",
#> "id": 3716398113,
#> "node_id": "I_kwDOAGIUpc7dg7wh",
#> "number": 7781,
#> "title": "slice_sample does not restrict sampling to n() within a group when replace=TRUE.",
#> "user": {
#> "login": "tlyons253",
#> "id": 28571872,
#> "node_id": "MDQ6VXNlcjI4NTcxODcy",
#> "avatar_url": "https://avatars.githubusercontent.com/u/28571872?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/tlyons253",
#> "html_url": "https://github.com/tlyons253",
#> "followers_url": "https://api.github.com/users/tlyons253/followers",
#> "following_url": "https://api.github.com/users/tlyons253/following{/other_user}",
#> "gists_url": "https://api.github.com/users/tlyons253/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/tlyons253/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/tlyons253/subscriptions",
#> "organizations_url": "https://api.github.com/users/tlyons253/orgs",
#> "repos_url": "https://api.github.com/users/tlyons253/repos",
#> "events_url": "https://api.github.com/users/tlyons253/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/tlyons253/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 4,
#> "created_at": "2025-12-10T18:51:54Z",
#> "updated_at": "2026-06-02T14:59:06Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "I've been playing around with slice_sample on grouped data frames for bootstrapping. The documentation states that if you provide a prop>1 or n> # of rows within a group, it will only sample the number of rows within a group. If you have replace=TRUE, that's not respected and you get as many samples per group as you request. I thought it was going to be a slick way to handle resampling from groups with different numbers of observations",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7781/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7781/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7779",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7779/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7779/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7779/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7779",
#> "id": 3686960331,
#> "node_id": "I_kwDOAGIUpc7bwozL",
#> "number": 7779,
#> "title": "Deprecate `sql_*` and `db_*`",
#> "user": {
#> "login": "hadley",
#> "id": 4196,
#> "node_id": "MDQ6VXNlcjQxOTY=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/4196?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/hadley",
#> "html_url": "https://github.com/hadley",
#> "followers_url": "https://api.github.com/users/hadley/followers",
#> "following_url": "https://api.github.com/users/hadley/following{/other_user}",
#> "gists_url": "https://api.github.com/users/hadley/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/hadley/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/hadley/subscriptions",
#> "organizations_url": "https://api.github.com/users/hadley/orgs",
#> "repos_url": "https://api.github.com/users/hadley/repos",
#> "events_url": "https://api.github.com/users/hadley/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/hadley/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-12-02T18:00:52Z",
#> "updated_at": "2025-12-02T18:00:52Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "The next version of dbplyr will no longer need them (https://github.com/tidyverse/dbplyr/pull/1651) so we can deprecate and then likely delete soon after.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7779/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7779/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7774",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7774/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7774/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7774/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7774",
#> "id": 3651717964,
#> "node_id": "I_kwDOAGIUpc7ZqMtM",
#> "number": 7774,
#> "title": "Using related columns in `cur_column()` with `across()`",
#> "user": {
#> "login": "olivroy",
#> "id": 52606734,
#> "node_id": "MDQ6VXNlcjUyNjA2NzM0",
#> "avatar_url": "https://avatars.githubusercontent.com/u/52606734?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/olivroy",
#> "html_url": "https://github.com/olivroy",
#> "followers_url": "https://api.github.com/users/olivroy/followers",
#> "following_url": "https://api.github.com/users/olivroy/following{/other_user}",
#> "gists_url": "https://api.github.com/users/olivroy/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/olivroy/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/olivroy/subscriptions",
#> "organizations_url": "https://api.github.com/users/olivroy/orgs",
#> "repos_url": "https://api.github.com/users/olivroy/repos",
#> "events_url": "https://api.github.com/users/olivroy/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/olivroy/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-11-21T13:36:07Z",
#> "updated_at": "2026-01-04T17:21:22Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Hello!\nI would like to write code with dplyr + across. for this:\n\nWhere x = x_1 + x_2, y = y_1 + y+2, etc.\n\n```r\ntibble(\n x = c(100, 50, 20),\n x_1 = c(20, 30, 10),\n x_2 = c(80, 20, 10),\n y = c(20, 12, 12),\n y_1 = c(15, 10, 2),\n y_2 = c(5, 2, 10)\n) |>\n mutate(\n across(matches(\"\\\\d$\"), \\(column) column / .data[[stringr::str_remove(col_name, \"_\\\\d\")\n )\n```\n\nI wonder it would be possible to add a helper like `cur_col_name()` for example that returns a string that I could manipulate to extract another column name\n\nThanks",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7774/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7774/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7773",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7773/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7773/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7773/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7773",
#> "id": 3647691384,
#> "node_id": "I_kwDOAGIUpc7Za1p4",
#> "number": 7773,
#> "title": "count function needs guard rails that name shouldn't be an existing column",
#> "user": {
#> "login": "szimmer",
#> "id": 8659598,
#> "node_id": "MDQ6VXNlcjg2NTk1OTg=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/8659598?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/szimmer",
#> "html_url": "https://github.com/szimmer",
#> "followers_url": "https://api.github.com/users/szimmer/followers",
#> "following_url": "https://api.github.com/users/szimmer/following{/other_user}",
#> "gists_url": "https://api.github.com/users/szimmer/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/szimmer/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/szimmer/subscriptions",
#> "organizations_url": "https://api.github.com/users/szimmer/orgs",
#> "repos_url": "https://api.github.com/users/szimmer/repos",
#> "events_url": "https://api.github.com/users/szimmer/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/szimmer/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 2,
#> "created_at": "2025-11-20T15:03:46Z",
#> "updated_at": "2026-02-23T14:02:23Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "If you use the count function and set name to be one of the existing columns you are tabulating on, you get unexpected results. This should yield either an error or a note that the name had to be modified.\n\n``` r\nlibrary(dplyr)\n#> \n#> Attaching package: 'dplyr'\n#> The following objects are masked from 'package:stats':\n#> \n#> filter, lag\n#> The following objects are masked from 'package:base':\n#> \n#> intersect, setdiff, setequal, union\nmydat <- tibble(x=rep(c(1,2), 5))\nmydat |>\n count(x)\n#> # A tibble: 2 × 2\n#> x n\n#> <dbl> <int>\n#> 1 1 5\n#> 2 2 5\nmydat |>\n count(x, name=\"x\")\n#> # A tibble: 2 × 1\n#> x\n#> <int>\n#> 1 5\n#> 2 5\n```\n\n<sup>Created on 2025-11-20 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n<details style=\"margin-bottom:10px;\">\n\n<summary>\n\nSession info\n<\/summary>\n\n``` r\nsessioninfo::session_info()\n#> ─ Session info ───────────────────────────────────────────────────────────────\n#> setting value\n#> version R version 4.5.1 (2025-06-13 ucrt)\n#> os Windows 11 x64 (build 22631)\n#> system x86_64, mingw32\n#> ui RTerm\n#> language (EN)\n#> collate English_United States.utf8\n#> ctype English_United States.utf8\n#> tz America/New_York\n#> date 2025-11-20\n#> pandoc 3.6.3 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)\n#> quarto 1.8.24 @ C:\\\\Users\\\\sazimmer\\\\AppData\\\\Local\\\\Programs\\\\Quarto\\\\bin\\\\quarto.exe\n#> \n#> ─ Packages ───────────────────────────────────────────────────────────────────\n#> package * version date (UTC) lib source\n#> cli 3.6.5 2025-04-23 [1] CRAN (R 4.5.0)\n#> digest 0.6.37 2024-08-19 [1] CRAN (R 4.5.0)\n#> dplyr * 1.1.4 2023-11-17 [1] CRAN (R 4.5.0)\n#> evaluate 1.0.5 2025-08-27 [1] RSPM (R 4.5.0)\n#> fastmap 1.2.0 2024-05-15 [1] CRAN (R 4.5.0)\n#> fs 1.6.6 2025-04-12 [1] CRAN (R 4.5.0)\n#> generics 0.1.4 2025-05-09 [1] CRAN (R 4.5.0)\n#> glue 1.8.0 2024-09-30 [1] CRAN (R 4.5.0)\n#> htmltools 0.5.8.1 2024-04-04 [1] CRAN (R 4.5.0)\n#> knitr 1.50 2025-03-16 [1] CRAN (R 4.5.0)\n#> lifecycle 1.0.4 2023-11-07 [1] CRAN (R 4.5.0)\n#> magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.5.0)\n#> pillar 1.11.0 2025-07-04 [1] RSPM (R 4.5.0)\n#> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.5.0)\n#> R6 2.6.1 2025-02-15 [1] CRAN (R 4.5.0)\n#> reprex 2.1.1 2024-07-06 [1] CRAN (R 4.5.0)\n#> rlang 1.1.6 2025-04-11 [1] CRAN (R 4.5.0)\n#> rmarkdown 2.29 2024-11-04 [1] CRAN (R 4.5.0)\n#> rstudioapi 0.17.1 2024-10-22 [1] CRAN (R 4.5.0)\n#> sessioninfo 1.2.3.9000 2025-09-18 [1] Github (r-lib/sessioninfo@ec4dd0c)\n#> tibble 3.3.0 2025-06-08 [1] RSPM (R 4.5.0)\n#> tidyselect 1.2.1 2024-03-11 [1] CRAN (R 4.5.0)\n#> vctrs 0.6.5 2023-12-01 [1] CRAN (R 4.5.0)\n#> withr 3.0.2 2024-10-28 [1] CRAN (R 4.5.0)\n#> xfun 0.53 2025-08-19 [1] RSPM (R 4.5.0)\n#> yaml 2.3.10 2024-07-26 [1] CRAN (R 4.5.0)\n#> \n#> [1] C:/Users/sazimmer/AppData/Local/R/win-library/4.5\n#> [2] C:/Program Files/R/R-4.5.1/library\n#> * ── Packages attached to the search path.\n#> \n#> ──────────────────────────────────────────────────────────────────────────────\n```\n\n<\/details>\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7773/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7773/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7712",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7712/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7712/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7712/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7712",
#> "id": 3428955607,
#> "node_id": "I_kwDOAGIUpc7MYbXX",
#> "number": 7712,
#> "title": "Add `bounds` to `dplyr::between()`",
#> "user": {
#> "login": "ScientiaFelis",
#> "id": 29957279,
#> "node_id": "MDQ6VXNlcjI5OTU3Mjc5",
#> "avatar_url": "https://avatars.githubusercontent.com/u/29957279?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/ScientiaFelis",
#> "html_url": "https://github.com/ScientiaFelis",
#> "followers_url": "https://api.github.com/users/ScientiaFelis/followers",
#> "following_url": "https://api.github.com/users/ScientiaFelis/following{/other_user}",
#> "gists_url": "https://api.github.com/users/ScientiaFelis/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/ScientiaFelis/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/ScientiaFelis/subscriptions",
#> "organizations_url": "https://api.github.com/users/ScientiaFelis/orgs",
#> "repos_url": "https://api.github.com/users/ScientiaFelis/repos",
#> "events_url": "https://api.github.com/users/ScientiaFelis/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/ScientiaFelis/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 3,
#> "created_at": "2025-09-18T07:03:23Z",
#> "updated_at": "2025-10-13T02:44:57Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "The docs of `between()` say:\n\n `This is a shortcut for x >= left & x <= right`\n\nIt would be nice to be able to set `between()` to exclude the values of `x` and `y`, that is equal to\n\n`x > left & x < right`\n\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7712/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7712/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7702",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7702/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7702/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7702/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7702",
#> "id": 3246229211,
#> "node_id": "I_kwDOAGIUpc7BfYbb",
#> "number": 7702,
#> "title": "`between()` doesn't work if `x` is `Date` and `left` and `right` are character",
#> "user": {
#> "login": "etiennebacher",
#> "id": 52219252,
#> "node_id": "MDQ6VXNlcjUyMjE5MjUy",
#> "avatar_url": "https://avatars.githubusercontent.com/u/52219252?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/etiennebacher",
#> "html_url": "https://github.com/etiennebacher",
#> "followers_url": "https://api.github.com/users/etiennebacher/followers",
#> "following_url": "https://api.github.com/users/etiennebacher/following{/other_user}",
#> "gists_url": "https://api.github.com/users/etiennebacher/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/etiennebacher/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/etiennebacher/subscriptions",
#> "organizations_url": "https://api.github.com/users/etiennebacher/orgs",
#> "repos_url": "https://api.github.com/users/etiennebacher/repos",
#> "events_url": "https://api.github.com/users/etiennebacher/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/etiennebacher/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 674867158,
#> "node_id": "MDU6TGFiZWw2NzQ4NjcxNTg=",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/documentation",
#> "name": "documentation",
#> "color": "CBBAB8",
#> "default": true,
#> "description": ""
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-07-20T10:08:39Z",
#> "updated_at": "2025-09-08T17:47:12Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "The docs of `between()` say:\n\n> This is a shortcut for `x >= left & x <= right`\n\nHowever, `between()` doesn't work if `x` is `Date` and `left` and `right` are character, while `<=` and `>=` work:\n\n``` r\nlibrary(dplyr, warn.conflicts = FALSE)\npackageVersion(\"dplyr\")\n#> [1] '1.1.4.9000'\n\nx <- as.Date(\"2010-01-02\")\nx >= \"2010-01-01\" & x <= \"2010-01-04\"\n#> [1] TRUE\n\nbetween(x, \"2010-01-01\", \"2010-01-04\")\n#> Error in `between()`:\n#> ! Can't combine `x` <date> and `left` <character>.\n```\n\nThe \"Details\" section says:\n\n> `x`, `left`, and `right` are all cast to their common type before the comparison is made.\n\nbut maybe it's worth updating the first line or mention somewhere that characters and dates are not compatible?\n\nMaybe related to https://github.com/r-lib/vctrs/issues/967",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7702/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7702/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7695",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7695/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7695/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7695/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7695",
#> "id": 3158138822,
#> "node_id": "I_kwDOAGIUpc68PV_G",
#> "number": 7695,
#> "title": "Make `add_tally()` S3 generic?",
#> "user": {
#> "login": "etiennebacher",
#> "id": 52219252,
#> "node_id": "MDQ6VXNlcjUyMjE5MjUy",
#> "avatar_url": "https://avatars.githubusercontent.com/u/52219252?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/etiennebacher",
#> "html_url": "https://github.com/etiennebacher",
#> "followers_url": "https://api.github.com/users/etiennebacher/followers",
#> "following_url": "https://api.github.com/users/etiennebacher/following{/other_user}",
#> "gists_url": "https://api.github.com/users/etiennebacher/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/etiennebacher/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/etiennebacher/subscriptions",
#> "organizations_url": "https://api.github.com/users/etiennebacher/orgs",
#> "repos_url": "https://api.github.com/users/etiennebacher/repos",
#> "events_url": "https://api.github.com/users/etiennebacher/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/etiennebacher/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 17708200,
#> "node_id": "MDU6TGFiZWwxNzcwODIwMA==",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/feature",
#> "name": "feature",
#> "color": "B4C3AE",
#> "default": false,
#> "description": "a feature request or enhancement"
#> },
#> {
#> "id": 4040664455,
#> "node_id": "LA_kwDOAGIUpc7w16WH",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/counting%20:abacus:",
#> "name": "counting :abacus:",
#> "color": "eeeeee",
#> "default": false,
#> "description": ""
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 3,
#> "created_at": "2025-06-18T20:56:57Z",
#> "updated_at": "2026-05-24T22:16:08Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "`count()`, `add_count()`, and `tally()` are generics but `add_tally()` is not:\n\n``` r\nsloop::is_s3_generic(\"count\", env = getNamespace(\"dplyr\"))\n#> [1] TRUE\nsloop::is_s3_generic(\"add_count\", env = getNamespace(\"dplyr\"))\n#> [1] TRUE\nsloop::is_s3_generic(\"tally\", env = getNamespace(\"dplyr\"))\n#> [1] TRUE\nsloop::is_s3_generic(\"add_tally\", env = getNamespace(\"dplyr\"))\n#> [1] FALSE\n```\n\nIs it possible to make `add_tally()` generic?\n\nIt looks like this was already planned in https://github.com/tidyverse/dplyr/issues/3739 but `add_tally()` was forgotten.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7695/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7695/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7693",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7693/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7693/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7693/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7693",
#> "id": 3130310206,
#> "node_id": "I_kwDOAGIUpc66lL4-",
#> "number": 7693,
#> "title": "Internal error in `summarise()`",
#> "user": {
#> "login": "DavisVaughan",
#> "id": 19150088,
#> "node_id": "MDQ6VXNlcjE5MTUwMDg4",
#> "avatar_url": "https://avatars.githubusercontent.com/u/19150088?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DavisVaughan",
#> "html_url": "https://github.com/DavisVaughan",
#> "followers_url": "https://api.github.com/users/DavisVaughan/followers",
#> "following_url": "https://api.github.com/users/DavisVaughan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DavisVaughan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DavisVaughan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DavisVaughan/subscriptions",
#> "organizations_url": "https://api.github.com/users/DavisVaughan/orgs",
#> "repos_url": "https://api.github.com/users/DavisVaughan/repos",
#> "events_url": "https://api.github.com/users/DavisVaughan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DavisVaughan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 17708198,
#> "node_id": "MDU6TGFiZWwxNzcwODE5OA==",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/bug",
#> "name": "bug",
#> "color": "E0B3A2",
#> "default": true,
#> "description": "an unexpected problem or unintended behavior"
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-06-09T13:25:44Z",
#> "updated_at": "2025-09-08T19:13:16Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "``` r\nlibrary(dplyr)\n\npenguins |>\n summarize(\n .by = species,\n across(everything(), identity),\n spline = data.frame(spline(bill_len, bill_dep, n=4L))\n )\n#> Error in names(dots)[[i]]: subscript out of bounds\n```\n\nSeems like `i` is 8, and `dots` is only length 2\n\n<img width=\"1457\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/648d4f05-e525-4afe-84e1-7bb6d48badf3\" />\n\nI think `i` is the post-expanded index, i.e. it increments by 1 after _each column_ `across(everything(), identity)` is applied to (7 cols), but we wanted the index incremented by 1 after _each expression_ that we run, i.e. `across(everything(), identity)` should count as 1 in total.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7693/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7693/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7692",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7692/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7692/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7692/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7692",
#> "id": 3130050652,
#> "node_id": "I_kwDOAGIUpc66kMhc",
#> "number": 7692,
#> "title": "`across(.names =)` evaluates `\"{col}\"` as if it was `\"{.col}\"`",
#> "user": {
#> "login": "arnaudgallou",
#> "id": 67476099,
#> "node_id": "MDQ6VXNlcjY3NDc2MDk5",
#> "avatar_url": "https://avatars.githubusercontent.com/u/67476099?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/arnaudgallou",
#> "html_url": "https://github.com/arnaudgallou",
#> "followers_url": "https://api.github.com/users/arnaudgallou/followers",
#> "following_url": "https://api.github.com/users/arnaudgallou/following{/other_user}",
#> "gists_url": "https://api.github.com/users/arnaudgallou/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/arnaudgallou/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/arnaudgallou/subscriptions",
#> "organizations_url": "https://api.github.com/users/arnaudgallou/orgs",
#> "repos_url": "https://api.github.com/users/arnaudgallou/repos",
#> "events_url": "https://api.github.com/users/arnaudgallou/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/arnaudgallou/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-06-09T11:41:35Z",
#> "updated_at": "2025-06-09T13:34:30Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "It doesn't seem to be the expected behavior according to the documentation.\n\n``` r\ncol <- \"foo\"\n\ntibble::tibble(\n x = 1:3,\n y = 4:6\n) |> \n dplyr::mutate(\n dplyr::across(c(x, y), \\(.x) .x * 2, .names = \"{col}_{.col}\")\n )\n#> # A tibble: 3 × 4\n#> x y x_x y_y\n#> <int> <int> <dbl> <dbl>\n#> 1 1 4 2 8\n#> 2 2 5 4 10\n#> 3 3 6 6 12\n\npackageVersion(\"dplyr\")\n#> [1] '1.1.4'\n```\n\n<sup>Created on 2025-06-09 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7692/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7692/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7668",
#> "id": 2905299014,
#> "node_id": "I_kwDOAGIUpc6tK1hG",
#> "number": 7668,
#> "title": "`tbl_vars()` accesses `nrow()` unnecessarily",
#> "user": {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 17708198,
#> "node_id": "MDU6TGFiZWwxNzcwODE5OA==",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/bug",
#> "name": "bug",
#> "color": "E0B3A2",
#> "default": true,
#> "description": "an unexpected problem or unintended behavior"
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-03-09T09:04:12Z",
#> "updated_at": "2025-09-08T19:19:45Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "This currently affects joins with `library(duckplyr)` . I can work around, perhaps we find a nicer way.\n\nDifficult to show with current duckplyr because we have our `group_vars()` method. The calling sequence goes as follows:\n\n- `tbl_vars()` calls `group_vars()` in the generic\n- `group_vars.data.frame()` calls `names(group_data())`\n- `group_data()` needs `nrow()`\n\nPerhaps we can implement an ALTREP solution for `group_vars()` ? Or add an argument to `group_data()` that indicates we really only care about the names?\n\nRelevant backtrace from a debugging session:\n\n```\nBacktrace:\n ▆\n 1. ├─testthat::expect_error(...) at test-tpch.R:245:3\n 2. │ └─testthat:::expect_condition_matching(...)\n 3. │ └─testthat:::quasi_capture(...)\n 4. │ ├─testthat (local) .capture(...)\n 5. │ │ └─base::withCallingHandlers(...)\n 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo))\n 7. └─duckplyr:::tpch_02() at test-tpch.R:247:5\n 8. ├─dplyr::inner_join(na_matches = TPCH_NA_MATCHES, p, ps, by = c(p_partkey = \"ps_partkey\")) at duckplyr/R/tpch.R:35:3\n 9. └─duckplyr (local) inner_join.data.frame(na_matches = TPCH_NA_MATCHES, p, ps, by = c(p_partkey = \"ps_partkey\"))\n 10. ├─duckplyr:::rel_try(...) at duckplyr/R/inner_join.R:10:3\n 11. │ └─base::force(rel) at duckplyr/R/relational.R:62:5\n 12. └─duckplyr:::rel_join_impl(...) at duckplyr/R/inner_join.R:22:7\n 13. └─duckplyr:::tbl_vars_safe(x) at duckplyr/R/join.R:19:3\n 14. └─dplyr::tbl_vars(x) at duckplyr/R/join.R:142:3\n 15. ├─dplyr:::new_sel_vars(tbl_vars_dispatch(x), group_vars(x))\n 16. │ └─base::structure(...)\n 17. ├─dplyr::group_vars(x)\n 18. └─dplyr:::group_vars.data.frame(x)\n 19. ├─generics::setdiff(names(group_data(x)), \".rows\")\n 20. ├─dplyr::group_data(x)\n 21. └─dplyr:::group_data.data.frame(x)\n 22. └─base::nrow(.data)\n 23. ├─base::dim(x)\n 24. └─base::dim.data.frame(x)\n 25. └─base::.row_names_info(x, 2L)\n```",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7657",
#> "id": 2848600494,
#> "node_id": "I_kwDOAGIUpc6pyjGu",
#> "number": 7657,
#> "title": "reframe with across returns an unhelpful error message",
#> "user": {
#> "login": "const-ae",
#> "id": 5359014,
#> "node_id": "MDQ6VXNlcjUzNTkwMTQ=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/5359014?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/const-ae",
#> "html_url": "https://github.com/const-ae",
#> "followers_url": "https://api.github.com/users/const-ae/followers",
#> "following_url": "https://api.github.com/users/const-ae/following{/other_user}",
#> "gists_url": "https://api.github.com/users/const-ae/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/const-ae/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/const-ae/subscriptions",
#> "organizations_url": "https://api.github.com/users/const-ae/orgs",
#> "repos_url": "https://api.github.com/users/const-ae/repos",
#> "events_url": "https://api.github.com/users/const-ae/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/const-ae/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 17708198,
#> "node_id": "MDU6TGFiZWwxNzcwODE5OA==",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/bug",
#> "name": "bug",
#> "color": "E0B3A2",
#> "default": true,
#> "description": "an unexpected problem or unintended behavior"
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-02-12T15:28:36Z",
#> "updated_at": "2025-09-08T19:28:56Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "When I call `reframe` with `across` and the length of the output is not consistent, the error message is a lot less helpful if the output of `across` is not named:\n\n``` r\nlibrary(tidyverse)\ntibble(x = 1:3, y = 4:6) |>\n reframe(test = across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in `reframe()`:\n#> ℹ In argument: `test = across(...)`.\n#> Caused by error in `across()`:\n#> ! Can't recycle `..1` (size 3) to match `..2` (size 12).\n\ntibble(x = 1:3, y = 4:6) |>\n reframe(across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in names(dots)[[i]]: subscript out of bounds\n```\n\n<sup>Created on 2025-02-12 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\nThe situation is slightly better with `mutate`:\n\n``` r\nlibrary(tidyverse)\ntibble(x = 1:3, y = 4:6) |>\n mutate(test = across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in `mutate()`:\n#> ℹ In argument: `test = across(...)`.\n#> Caused by error in `across()`:\n#> ! Can't recycle `..1` (size 3) to match `..2` (size 12).\n\ntibble(x = 1:3, y = 4:6) |>\n mutate(across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in `mutate()`:\n#> ℹ In argument: `across(...)`.\n#> Caused by error in `across()`:\n#> ! Can't compute column `y`.\n#> Caused by error in `dplyr_internal_error()`:\n```\n\n<sup>Created on 2025-02-12 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n<details style=\"margin-bottom:10px;\">\n<summary>\nSession info\n<\/summary>\n\n``` r\nsessioninfo::session_info()\n#> ─ Session info ───────────────────────────────────────────────────────────────\n#> setting value\n#> version R version 4.4.1 (2024-06-14)\n#> os macOS Sonoma 14.6\n#> system aarch64, darwin20\n#> ui X11\n#> language (EN)\n#> collate en_US.UTF-8\n#> ctype en_US.UTF-8\n#> tz Europe/London\n#> date 2025-02-12\n#> pandoc 3.2 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)\n#> \n#> ─ Packages ───────────────────────────────────────────────────────────────────\n#> ! package * version date (UTC) lib source\n#> P cli 3.6.3 2024-06-21 [?] CRAN (R 4.4.0)\n#> P colorspace 2.1-1 2024-07-26 [?] CRAN (R 4.4.0)\n#> P digest 0.6.37 2024-08-19 [?] CRAN (R 4.4.1)\n#> P dplyr * 1.1.4 2023-11-17 [?] CRAN (R 4.4.0)\n#> P evaluate 1.0.3 2025-01-10 [?] CRAN (R 4.4.1)\n#> P fansi 1.0.6 2023-12-08 [?] CRAN (R 4.4.0)\n#> P fastmap 1.2.0 2024-05-15 [?] CRAN (R 4.4.0)\n#> P forcats * 1.0.0 2023-01-29 [?] CRAN (R 4.4.0)\n#> P fs 1.6.5 2024-10-30 [?] CRAN (R 4.4.1)\n#> P generics 0.1.3 2022-07-05 [?] CRAN (R 4.4.0)\n#> P ggplot2 * 3.5.1 2024-04-23 [?] CRAN (R 4.4.0)\n#> P glue 1.8.0 2024-09-30 [?] CRAN (R 4.4.1)\n#> P gtable 0.3.6 2024-10-25 [?] CRAN (R 4.4.1)\n#> P hms 1.1.3 2023-03-21 [?] CRAN (R 4.4.0)\n#> P htmltools 0.5.8.1 2024-04-04 [?] CRAN (R 4.4.0)\n#> P knitr 1.49 2024-11-08 [?] CRAN (R 4.4.1)\n#> P lifecycle 1.0.4 2023-11-07 [?] CRAN (R 4.4.0)\n#> P lubridate * 1.9.3 2023-09-27 [?] CRAN (R 4.4.0)\n#> P magrittr 2.0.3 2022-03-30 [?] CRAN (R 4.4.0)\n#> P munsell 0.5.1 2024-04-01 [?] CRAN (R 4.4.0)\n#> P pillar 1.9.0 2023-03-22 [?] CRAN (R 4.4.0)\n#> P pkgconfig 2.0.3 2019-09-22 [?] CRAN (R 4.4.0)\n#> P purrr * 1.0.2 2023-08-10 [?] CRAN (R 4.4.0)\n#> P R6 2.5.1 2021-08-19 [?] CRAN (R 4.4.0)\n#> P readr * 2.1.5 2024-01-10 [?] CRAN (R 4.4.0)\n#> P reprex 2.1.1 2024-07-06 [?] CRAN (R 4.4.0)\n#> P rlang 1.1.4 2024-06-04 [?] CRAN (R 4.4.0)\n#> P rmarkdown 2.29 2024-11-04 [?] CRAN (R 4.4.1)\n#> P rstudioapi 0.17.1 2024-10-22 [?] CRAN (R 4.4.1)\n#> P scales 1.3.0 2023-11-28 [?] CRAN (R 4.4.0)\n#> P sessioninfo 1.2.2 2021-12-06 [?] CRAN (R 4.4.0)\n#> P stringi 1.8.4 2024-05-06 [?] CRAN (R 4.4.0)\n#> P stringr * 1.5.1 2023-11-14 [?] CRAN (R 4.4.0)\n#> P tibble * 3.2.1 2023-03-20 [?] CRAN (R 4.4.0)\n#> P tidyr * 1.3.1 2024-01-24 [?] CRAN (R 4.4.0)\n#> P tidyselect 1.2.1 2024-03-11 [?] CRAN (R 4.4.0)\n#> P tidyverse * 2.0.0 2023-02-22 [?] CRAN (R 4.4.0)\n#> P timechange 0.3.0 2024-01-18 [?] CRAN (R 4.4.0)\n#> P tzdb 0.4.0 2023-05-12 [?] CRAN (R 4.4.0)\n#> P utf8 1.2.4 2023-10-22 [?] CRAN (R 4.4.0)\n#> P vctrs 0.6.5 2023-12-01 [?] CRAN (R 4.4.0)\n#> P withr 3.0.2 2024-10-28 [?] CRAN (R 4.4.1)\n#> P xfun 0.50 2025-01-07 [?] CRAN (R 4.4.1)\n#> P yaml 2.3.10 2024-07-26 [?] CRAN (R 4.4.0)\n#> \n#> [1] /Users/ahlmanne/Documents/Work_Projects/precancer-atlas-code/renv/library/macos/R-4.4/aarch64-apple-darwin20\n#> [2] /Users/ahlmanne/Library/Caches/org.R-project.R/R/renv/sandbox/macos/R-4.4/aarch64-apple-darwin20/f7156815\n#> [3] /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library\n#> \n#> P ── Loaded and on-disk path mismatch.\n#> \n#> ──────────────────────────────────────────────────────────────────────────────\n```\n\n<\/details>",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7622",
#> "id": 2769857410,
#> "node_id": "I_kwDOAGIUpc6lGKuC",
#> "number": 7622,
#> "title": "`Mutating joins` relationship documentation issues",
#> "user": {
#> "login": "bounlu",
#> "id": 17899927,
#> "node_id": "MDQ6VXNlcjE3ODk5OTI3",
#> "avatar_url": "https://avatars.githubusercontent.com/u/17899927?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/bounlu",
#> "html_url": "https://github.com/bounlu",
#> "followers_url": "https://api.github.com/users/bounlu/followers",
#> "following_url": "https://api.github.com/users/bounlu/following{/other_user}",
#> "gists_url": "https://api.github.com/users/bounlu/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/bounlu/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/bounlu/subscriptions",
#> "organizations_url": "https://api.github.com/users/bounlu/orgs",
#> "repos_url": "https://api.github.com/users/bounlu/repos",
#> "events_url": "https://api.github.com/users/bounlu/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/bounlu/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 674867158,
#> "node_id": "MDU6TGFiZWw2NzQ4NjcxNTg=",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/documentation",
#> "name": "documentation",
#> "color": "CBBAB8",
#> "default": true,
#> "description": ""
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-01-06T05:32:44Z",
#> "updated_at": "2025-09-08T19:43:08Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "`Mutate-joins (dplyr)` documentation says:\n\n```\nrelationship\n\nHandling of the expected relationship between the keys of x and y. If the expectations chosen from the list below are invalidated, an error is thrown.\n\nNULL, the default, doesn't expect there to be any relationship between x and y. However, for equality joins it will check for a many-to-many relationship (which is typically unexpected) and will warn if one occurs, encouraging you to either take a closer look at your inputs or make this relationship explicit by specifying \"many-to-many\".\n\nSee the Many-to-many relationships section for more details.\n\n\"one-to-one\" expects:\nEach row in x matches at most 1 row in y.\nEach row in y matches at most 1 row in x.\n\n\"one-to-many\" expects:\nEach row in y matches at most 1 row in x.\n\n\"many-to-one\" expects:\nEach row in x matches at most 1 row in y.\n\n\"many-to-many\" doesn't perform any relationship checks, but is provided to allow you to be explicit about this relationship if you know it exists.\n\nrelationship doesn't handle cases where there are zero matches. For that, see unmatched.\n```\n\nI see there are 2 issues:\n\n1. `one-to-many` and `many-to-one` description looks awkward and reversed to me. Logically, it should specify from left to right, x -> y. So `one-to-many` should mean \"Rows in x may match multiple rows in y\". Similarly, `many-to-one` should mean \"Multiple rows in x may match same row in y\".\n\n2. Specifying `relationship` explicitly as `one-to-many` or `many-to-one` do not generate any warning or error if there is no such matching in the data, i.e. if only `one-to-one` exists. I would expect an error would be thrown if the specified relationship does not exist in the matching as the documentation says, otherwise I don't get the point of specifying the relationship explicitly.\n\nI have read [this](https://github.com/tidyverse/dplyr/pull/6753) but I believe the above issues still remain to be resolved.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> }
#> ]
gh("/repos/{owner}/{repo}/issues", owner = "hadley", repo = "dplyr")
#> [
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7844",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7844/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7844/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7844/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7844",
#> "id": 4601342463,
#> "node_id": "PR_kwDOAGIUpc7jU7NL",
#> "number": 7844,
#> "title": "docs: clarify between comparison semantics",
#> "user": {
#> "login": "LeonidasZhak",
#> "id": 70497898,
#> "node_id": "MDQ6VXNlcjcwNDk3ODk4",
#> "avatar_url": "https://avatars.githubusercontent.com/u/70497898?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/LeonidasZhak",
#> "html_url": "https://github.com/LeonidasZhak",
#> "followers_url": "https://api.github.com/users/LeonidasZhak/followers",
#> "following_url": "https://api.github.com/users/LeonidasZhak/following{/other_user}",
#> "gists_url": "https://api.github.com/users/LeonidasZhak/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/LeonidasZhak/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/LeonidasZhak/subscriptions",
#> "organizations_url": "https://api.github.com/users/LeonidasZhak/orgs",
#> "repos_url": "https://api.github.com/users/LeonidasZhak/repos",
#> "events_url": "https://api.github.com/users/LeonidasZhak/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/LeonidasZhak/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-06-06T01:42:33Z",
#> "updated_at": "2026-06-06T01:42:33Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7844",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7844",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7844.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7844.patch",
#> "merged_at": {}
#> },
#> "body": "Fixes #7702.\n\n## Summary\n- describe local `between()` comparisons as similar to `x >= left & x <= right`, rather than an exact shortcut\n- mention that local comparisons use vctrs after common-type casting\n- clarify that character strings are not parsed as dates or date-times\n\n## Checks\n- `Rscript -e 'tools::checkRd(\"man/between.Rd\")'`\\n- `git diff --check`\\n- `R CMD build --no-build-vignettes .` was attempted, but this local machine has `rlang` 1.1.6 loaded while dplyr now requires >= 1.1.7",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7844/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7844/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7843",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7843/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7843/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7843/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7843",
#> "id": 4578141971,
#> "node_id": "I_kwDOAGIUpc8AAAABEODnEw",
#> "number": 7843,
#> "title": "Improve error message for trailing comma in `across()`",
#> "user": {
#> "login": "DanChaltiel",
#> "id": 15105152,
#> "node_id": "MDQ6VXNlcjE1MTA1MTUy",
#> "avatar_url": "https://avatars.githubusercontent.com/u/15105152?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DanChaltiel",
#> "html_url": "https://github.com/DanChaltiel",
#> "followers_url": "https://api.github.com/users/DanChaltiel/followers",
#> "following_url": "https://api.github.com/users/DanChaltiel/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DanChaltiel/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DanChaltiel/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DanChaltiel/subscriptions",
#> "organizations_url": "https://api.github.com/users/DanChaltiel/orgs",
#> "repos_url": "https://api.github.com/users/DanChaltiel/repos",
#> "events_url": "https://api.github.com/users/DanChaltiel/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DanChaltiel/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-06-03T08:25:13Z",
#> "updated_at": "2026-06-03T08:25:13Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Hi,\n\nThis is a rather minor issue, but I spent some time scratching my head over it, so I thought it could be worth reporting as a possible error-message improvement.\n\nWhen leaving a trailing comma in `across()`, the resulting error mentions an unused `alist()` argument:\n\n``` r\nSys.setenv(LANGUAGE=\"en\")\nlibrary(dplyr)\nmtcars %>%\n mutate(across(am, \\(.x) .x+1, ))\n#> Error in `mutate()`:\n#> ℹ In argument: `across(am, function(.x) .x + 1, )`.\n#> Caused by error in `across()`:\n#> ! Can't compute column `am`.\n#> Caused by error in `fn()`:\n#> ! unused argument (alist())\n```\n\n<sup>Created on 2026-06-03 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\nIn this short example, the trailing comma is easy to spot. However, with a longer function, it is much less noticeable in the trace, and I found the `alist()` message very hard to link to the actual problem.\n\nMaybe there is a way to catch it and rewrite it somehow?\n\nThanks!",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7843/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7843/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7838",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7838/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7838/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7838/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7838",
#> "id": 4470572514,
#> "node_id": "I_kwDOAGIUpc8AAAABCneF4g",
#> "number": 7838,
#> "title": "Should we have AI specific warnings?",
#> "user": {
#> "login": "DavisVaughan",
#> "id": 19150088,
#> "node_id": "MDQ6VXNlcjE5MTUwMDg4",
#> "avatar_url": "https://avatars.githubusercontent.com/u/19150088?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DavisVaughan",
#> "html_url": "https://github.com/DavisVaughan",
#> "followers_url": "https://api.github.com/users/DavisVaughan/followers",
#> "following_url": "https://api.github.com/users/DavisVaughan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DavisVaughan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DavisVaughan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DavisVaughan/subscriptions",
#> "organizations_url": "https://api.github.com/users/DavisVaughan/orgs",
#> "repos_url": "https://api.github.com/users/DavisVaughan/repos",
#> "events_url": "https://api.github.com/users/DavisVaughan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DavisVaughan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-05-18T15:55:34Z",
#> "updated_at": "2026-05-18T15:55:34Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Consider this warning message about multiple matches in joins\n\nhttps://github.com/tidyverse/dplyr/blob/770ad50f884ebb78a479d78b79d0ba2ec0fb0c53/R/join-rows.R#L244-L252\n\nWhen an AI reads this after executing the code, it tends to aggressively avoid warnings and will just insert `relationship = \"many-to-many\"` to silence the warning.\n\nBut this is bad! Awful even!\n\nThe whole point of this warning is to force the user to _question their own assumptions_ and explicitly make this decision for themselves.\n\nWould it be useful for us to conditionally add a bullet to warnings like this one, via something like `testthat:::is_llm()`, so that when Claude runs this code itself, it sees the AI specific version of the warning which would read something like\n\n\n> i = if (is_llm()) \"AI Systems - Never remove this warning on your own by setting `relationship` for the user. Instead stop and prompt the user to investigate whether or not this is their actual intention\"\n\nWe would use this sparingly, for warnings that are really for cases with contextual semantic meaning, not syntax\n\n(I don't currently have any other examples)",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7838/reactions",
#> "total_count": 1,
#> "+1": 1,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7838/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7835",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7835/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7835/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7835/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7835",
#> "id": 4433942873,
#> "node_id": "PR_kwDOAGIUpc7a6mOW",
#> "number": 7835,
#> "title": "Fix #7773 and #7785: Improve count() and across()",
#> "user": {
#> "login": "mrv0for0vandeta",
#> "id": 197428919,
#> "node_id": "U_kgDOC8SGtw",
#> "avatar_url": "https://avatars.githubusercontent.com/u/197428919?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/mrv0for0vandeta",
#> "html_url": "https://github.com/mrv0for0vandeta",
#> "followers_url": "https://api.github.com/users/mrv0for0vandeta/followers",
#> "following_url": "https://api.github.com/users/mrv0for0vandeta/following{/other_user}",
#> "gists_url": "https://api.github.com/users/mrv0for0vandeta/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/mrv0for0vandeta/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/mrv0for0vandeta/subscriptions",
#> "organizations_url": "https://api.github.com/users/mrv0for0vandeta/orgs",
#> "repos_url": "https://api.github.com/users/mrv0for0vandeta/repos",
#> "events_url": "https://api.github.com/users/mrv0for0vandeta/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/mrv0for0vandeta/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-05-13T01:38:56Z",
#> "updated_at": "2026-05-13T02:10:30Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": true,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7835",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7835",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7835.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7835.patch",
#> "merged_at": {}
#> },
#> "body": {},
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7835/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7835/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7831",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7831/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7831/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7831/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7831",
#> "id": 4238079969,
#> "node_id": "I_kwDOAGIUpc78m_fh",
#> "number": 7831,
#> "title": "FR: `if_any(.empty=\"keep\")`",
#> "user": {
#> "login": "DanChaltiel",
#> "id": 15105152,
#> "node_id": "MDQ6VXNlcjE1MTA1MTUy",
#> "avatar_url": "https://avatars.githubusercontent.com/u/15105152?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DanChaltiel",
#> "html_url": "https://github.com/DanChaltiel",
#> "followers_url": "https://api.github.com/users/DanChaltiel/followers",
#> "following_url": "https://api.github.com/users/DanChaltiel/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DanChaltiel/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DanChaltiel/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DanChaltiel/subscriptions",
#> "organizations_url": "https://api.github.com/users/DanChaltiel/orgs",
#> "repos_url": "https://api.github.com/users/DanChaltiel/repos",
#> "events_url": "https://api.github.com/users/DanChaltiel/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DanChaltiel/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-04-10T09:27:08Z",
#> "updated_at": "2026-04-10T09:27:08Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Hi,\n\nSince https://github.com/tidyverse/dplyr/issues/7059, zero-length selection in `if_any()` yields an empty dataframe:\n\n``` r\nlibrary(dplyr)\nselected_cols = \"mpg\"\nmtcars |>\n filter(if_any(any_of(selected_cols), ~ .x>20)) |>\n nrow()\n#> [1] 14\n\nselected_cols = character(0)\nmtcars |>\n filter(if_any(any_of(selected_cols), ~ .x>20)) |>\n nrow()\n#> [1] 0\n```\n\n<sup>Created on 2026-04-10 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\nThis behaviour is consistent with the current definition of `if_any()`, but in some programmatic workflows it would be useful to have an option to keep all rows when the selection is empty.\n\nA typical use case is:\n\n- define a predicate\n- define a set of columns on which to apply it\n- filter rows failing that predicate on any selected column\n\nIn that context, when no columns are selected, it can be natural to interpret this as \"there is nothing to check\", so all rows should be kept rather than discarded.\n\nFor example, something like `.empty= \"keep\"` could be useful, with the current behaviour remaining the default (`.empty= \"discard\"`).\n\nThere is some kind of workaround, but I don't find it very satisfying: \n```r\nmtcars |>\n filter(\n length(selected_cols) == 0 ||\n if_any(any_of(selected_cols), ~ .x > 20)\n ) |>\n nrow()\n#> [1] 32\n```\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7831/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7831/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7829",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7829/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7829/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7829/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7829",
#> "id": 4211899384,
#> "node_id": "PR_kwDOAGIUpc7QNxIE",
#> "number": 7829,
#> "title": "Use dev roxygen2 + doc listing",
#> "user": {
#> "login": "hadley",
#> "id": 4196,
#> "node_id": "MDQ6VXNlcjQxOTY=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/4196?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/hadley",
#> "html_url": "https://github.com/hadley",
#> "followers_url": "https://api.github.com/users/hadley/followers",
#> "following_url": "https://api.github.com/users/hadley/following{/other_user}",
#> "gists_url": "https://api.github.com/users/hadley/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/hadley/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/hadley/subscriptions",
#> "organizations_url": "https://api.github.com/users/hadley/orgs",
#> "repos_url": "https://api.github.com/users/hadley/repos",
#> "events_url": "https://api.github.com/users/hadley/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/hadley/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-04-06T13:28:35Z",
#> "updated_at": "2026-04-07T12:57:45Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7829",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7829",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7829.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7829.patch",
#> "merged_at": {}
#> },
#> "body": "* Re-run with dev roxygen2 (lots of diffs due to consist link generation)\r\n* Switch to using `doclisting::methods_list()`\r\n* Fix issue with upcoming dbplyr release",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7829/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7829/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7822",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7822/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7822/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7822/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7822",
#> "id": 4121797214,
#> "node_id": "I_kwDOAGIUpc71raJe",
#> "number": 7822,
#> "title": "Should `cbind` and `rbind` be mentionned in dplyr <-> base R?",
#> "user": {
#> "login": "TanguyBarthelemy",
#> "id": 112711017,
#> "node_id": "U_kgDOBrfVaQ",
#> "avatar_url": "https://avatars.githubusercontent.com/u/112711017?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/TanguyBarthelemy",
#> "html_url": "https://github.com/TanguyBarthelemy",
#> "followers_url": "https://api.github.com/users/TanguyBarthelemy/followers",
#> "following_url": "https://api.github.com/users/TanguyBarthelemy/following{/other_user}",
#> "gists_url": "https://api.github.com/users/TanguyBarthelemy/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/TanguyBarthelemy/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/TanguyBarthelemy/subscriptions",
#> "organizations_url": "https://api.github.com/users/TanguyBarthelemy/orgs",
#> "repos_url": "https://api.github.com/users/TanguyBarthelemy/repos",
#> "events_url": "https://api.github.com/users/TanguyBarthelemy/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/TanguyBarthelemy/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-03-23T15:36:28Z",
#> "updated_at": "2026-03-23T15:36:28Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Is it possible to include the `bind_cols` and `bind_rows` functions in the R base and tidyverse comparison vignette?\n\nhttps://github.com/tidyverse/dplyr/blob/main/vignettes/base.Rmd\n\nI think these are widely used functions and that including them would be beneficial (even if their uses may differ).",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7822/reactions",
#> "total_count": 3,
#> "+1": 3,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7822/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7817",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7817/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7817/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7817/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7817",
#> "id": 4047896689,
#> "node_id": "PR_kwDOAGIUpc7JMQNe",
#> "number": 7817,
#> "title": "add examples for `if_any()`/`if_all()` to `filter()` docs",
#> "user": {
#> "login": "tanho63",
#> "id": 38083823,
#> "node_id": "MDQ6VXNlcjM4MDgzODIz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/38083823?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/tanho63",
#> "html_url": "https://github.com/tanho63",
#> "followers_url": "https://api.github.com/users/tanho63/followers",
#> "following_url": "https://api.github.com/users/tanho63/following{/other_user}",
#> "gists_url": "https://api.github.com/users/tanho63/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/tanho63/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/tanho63/subscriptions",
#> "organizations_url": "https://api.github.com/users/tanho63/orgs",
#> "repos_url": "https://api.github.com/users/tanho63/repos",
#> "events_url": "https://api.github.com/users/tanho63/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/tanho63/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-03-09T21:02:34Z",
#> "updated_at": "2026-03-10T17:00:36Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7817",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7817",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7817.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7817.patch",
#> "merged_at": {}
#> },
#> "body": "Closes #7816 ",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7817/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7817/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7816",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7816/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7816/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7816/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7816",
#> "id": 4046784550,
#> "node_id": "I_kwDOAGIUpc7xNQgm",
#> "number": 7816,
#> "title": "`filter()` documentation should refer to `if_any()` or `if_all()` for across-like filtering",
#> "user": {
#> "login": "tanho63",
#> "id": 38083823,
#> "node_id": "MDQ6VXNlcjM4MDgzODIz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/38083823?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/tanho63",
#> "html_url": "https://github.com/tanho63",
#> "followers_url": "https://api.github.com/users/tanho63/followers",
#> "following_url": "https://api.github.com/users/tanho63/following{/other_user}",
#> "gists_url": "https://api.github.com/users/tanho63/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/tanho63/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/tanho63/subscriptions",
#> "organizations_url": "https://api.github.com/users/tanho63/orgs",
#> "repos_url": "https://api.github.com/users/tanho63/repos",
#> "events_url": "https://api.github.com/users/tanho63/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/tanho63/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 2,
#> "created_at": "2026-03-09T17:03:42Z",
#> "updated_at": "2026-03-09T20:58:12Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Hiya! Was just explaining to someone else how to resolve bugs caused by the [deprecation of using across() in filter()](https://github.com/tidyverse/dplyr/pull/7765) and noticed that `if_any()/if_all()` are not mentioned/explained in the `filter()` docs, should there be some mention of using this (in \"Useful Filter Functions\" and/or in the examples?)\n\nHappy to contribute a PR if desired",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7816/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7816/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7813",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7813/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7813/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7813/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7813",
#> "id": 3971455173,
#> "node_id": "PR_kwDOAGIUpc7FUBq-",
#> "number": 7813,
#> "title": "Add ellipsis to `tally()` and `add_tally()`",
#> "user": {
#> "login": "Copilot",
#> "id": 198982749,
#> "node_id": "BOT_kgDOC9w8XQ",
#> "avatar_url": "https://avatars.githubusercontent.com/in/1143301?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/Copilot",
#> "html_url": "https://github.com/apps/copilot-swe-agent",
#> "followers_url": "https://api.github.com/users/Copilot/followers",
#> "following_url": "https://api.github.com/users/Copilot/following{/other_user}",
#> "gists_url": "https://api.github.com/users/Copilot/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/Copilot/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/Copilot/subscriptions",
#> "organizations_url": "https://api.github.com/users/Copilot/orgs",
#> "repos_url": "https://api.github.com/users/Copilot/repos",
#> "events_url": "https://api.github.com/users/Copilot/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/Copilot/received_events",
#> "type": "Bot",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [
#> {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> {
#> "login": "Copilot",
#> "id": 198982749,
#> "node_id": "BOT_kgDOC9w8XQ",
#> "avatar_url": "https://avatars.githubusercontent.com/in/1143301?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/Copilot",
#> "html_url": "https://github.com/apps/copilot-swe-agent",
#> "followers_url": "https://api.github.com/users/Copilot/followers",
#> "following_url": "https://api.github.com/users/Copilot/following{/other_user}",
#> "gists_url": "https://api.github.com/users/Copilot/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/Copilot/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/Copilot/subscriptions",
#> "organizations_url": "https://api.github.com/users/Copilot/orgs",
#> "repos_url": "https://api.github.com/users/Copilot/repos",
#> "events_url": "https://api.github.com/users/Copilot/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/Copilot/received_events",
#> "type": "Bot",
#> "user_view_type": "public",
#> "site_admin": false
#> }
#> ],
#> "milestone": {},
#> "comments": 4,
#> "created_at": "2026-02-21T06:29:33Z",
#> "updated_at": "2026-02-22T07:06:15Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": true,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7813",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7813",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7813.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7813.patch",
#> "merged_at": {}
#> },
#> "body": "- [x] Revert to original state to address reviewer feedback\n- [x] Move dots checking from method to generic using collector function pattern\n- [x] `tally()` generic: check dots via `collect_tally_args()`, then call `tally_dispatch()` which dispatches via `UseMethod(\"tally\")`\n- [x] `add_tally()`: same pattern, then call `add_tally_impl()`\n- [x] Use R's built-in argument matching in `collect_tally_args()` (old signature without `x`), emit deprecation warnings per matched arg\n- [x] Handle `wt` NSE properly via `enquo()` in collector\n- [x] `count.data.frame` / `add_count_impl` bypass dots checking, call dispatch/impl directly\n- [x] Fix error ownership: add `dplyr_local_error_call()` in generics, use `dplyr_error_call()` in methods\n- [x] Update snapshots: errors from `count()` path now correctly show `count()` not `tally()`\n- [x] Update tests for all combinations of named/unnamed args\n- [ ] CI verification\n\n<!-- START COPILOT ORIGINAL PROMPT -->\n\n\n\n<details>\n\n<summary>Original prompt<\/summary>\n\n> \n> ----\n> \n> *This section details on the original issue you should resolve*\n> \n> <issue_title>Add ellipsis to `tally()` and `add_tally()`<\/issue_title>\n> <issue_description>The `wt`, `sort` and `name` arguments should be behind an ellipsis, like for `count()` and similarly for other verbs.\n> \n> Agent instructions:\n> \n> Add an ellipsis to the generic and to the method. Ensure that users still can pass unnamed arguments, with a compatibility warning. For this, implement a pattern like\n> \n> ```\n> tally <- function(x, ..., wt = NULL ......) {\n> # Add compat code that checks ... and converts to regular arguments\n> tally_(x, wt = !!wt, sort = sort, name = name)\n> }\n> tally_ <- function(.....) {\n> UseMethod(\"tally\")\n> }\n> ```\n> \n> Add comprehensive tests for all combinations of named and unnamed args, perhaps with a tester class that has a `tally()` method that just returns the args.<\/issue_description>\n> \n> ## Comments on the Issue (you are @copilot in this section)\n> \n> <comments>\n> <\/comments>\n> \n\n\n<\/details>\n\n\n\n<!-- START COPILOT CODING AGENT SUFFIX -->\n\n- Fixes tidyverse/dplyr#7812\n\n<!-- START COPILOT CODING AGENT TIPS -->\n---\n\n💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7813/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7813/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7812",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7812/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7812/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7812/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7812",
#> "id": 3971454894,
#> "node_id": "I_kwDOAGIUpc7st5eu",
#> "number": 7812,
#> "title": "Add ellipsis to `tally()` and `add_tally()`",
#> "user": {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [
#> {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> {
#> "login": "Copilot",
#> "id": 198982749,
#> "node_id": "BOT_kgDOC9w8XQ",
#> "avatar_url": "https://avatars.githubusercontent.com/in/1143301?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/Copilot",
#> "html_url": "https://github.com/apps/copilot-swe-agent",
#> "followers_url": "https://api.github.com/users/Copilot/followers",
#> "following_url": "https://api.github.com/users/Copilot/following{/other_user}",
#> "gists_url": "https://api.github.com/users/Copilot/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/Copilot/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/Copilot/subscriptions",
#> "organizations_url": "https://api.github.com/users/Copilot/orgs",
#> "repos_url": "https://api.github.com/users/Copilot/repos",
#> "events_url": "https://api.github.com/users/Copilot/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/Copilot/received_events",
#> "type": "Bot",
#> "user_view_type": "public",
#> "site_admin": false
#> }
#> ],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-02-21T06:29:27Z",
#> "updated_at": "2026-02-21T06:29:27Z",
#> "closed_at": {},
#> "assignee": {
#> "login": "Copilot",
#> "id": 198982749,
#> "node_id": "BOT_kgDOC9w8XQ",
#> "avatar_url": "https://avatars.githubusercontent.com/in/1143301?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/Copilot",
#> "html_url": "https://github.com/apps/copilot-swe-agent",
#> "followers_url": "https://api.github.com/users/Copilot/followers",
#> "following_url": "https://api.github.com/users/Copilot/following{/other_user}",
#> "gists_url": "https://api.github.com/users/Copilot/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/Copilot/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/Copilot/subscriptions",
#> "organizations_url": "https://api.github.com/users/Copilot/orgs",
#> "repos_url": "https://api.github.com/users/Copilot/repos",
#> "events_url": "https://api.github.com/users/Copilot/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/Copilot/received_events",
#> "type": "Bot",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "The `wt`, `sort` and `name` arguments should be behind an ellipsis, like for `count()` and similarly for other verbs.\n\nAgent instructions:\n\nAdd an ellipsis to the generic and to the method. Ensure that users still can pass unnamed arguments, with a compatibility warning. For this, implement a pattern like\n\n```\ntally <- function(x, ..., wt = NULL ......) {\n # Add compat code that checks ... and converts to regular arguments\n tally_(x, wt = !!wt, sort = sort, name = name)\n}\ntally_ <- function(.....) {\n UseMethod(\"tally\")\n}\n```\n\nAdd comprehensive tests for all combinations of named and unnamed args, perhaps with a tester class that has a `tally()` method that just returns the args.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7812/reactions",
#> "total_count": 1,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 1
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7812/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7807",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7807/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7807/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7807/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7807",
#> "id": 3917366678,
#> "node_id": "PR_kwDOAGIUpc7CiKEv",
#> "number": 7807,
#> "title": "Prototype of webr on the landing page",
#> "user": {
#> "login": "DavisVaughan",
#> "id": 19150088,
#> "node_id": "MDQ6VXNlcjE5MTUwMDg4",
#> "avatar_url": "https://avatars.githubusercontent.com/u/19150088?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DavisVaughan",
#> "html_url": "https://github.com/DavisVaughan",
#> "followers_url": "https://api.github.com/users/DavisVaughan/followers",
#> "following_url": "https://api.github.com/users/DavisVaughan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DavisVaughan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DavisVaughan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DavisVaughan/subscriptions",
#> "organizations_url": "https://api.github.com/users/DavisVaughan/orgs",
#> "repos_url": "https://api.github.com/users/DavisVaughan/repos",
#> "events_url": "https://api.github.com/users/DavisVaughan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DavisVaughan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2026-02-09T17:28:38Z",
#> "updated_at": "2026-02-10T15:50:41Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": true,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7807",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7807",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7807.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7807.patch",
#> "merged_at": {}
#> },
#> "body": "- [ ] Could we add some kind of Plausible integration?\r\n- [ ] Fonts are hardcoded to `font-family: 'Source Code Pro'`. Should it be `var(--bs-font-monospace)` in `webr.css`? Would that just work?\r\n- [ ] Can this be templated enough to live as `usethis::use_pkgdown_webr()`?\r\n - Package name is easy to extract\r\n - Sample code would have to be provided somewhere for usethis to inject into the template. It would be package specific.\r\n- [x] Can we get the javascript out of `_pkgdown.yml` and have `pkgdown::preview_site()` still work? Because it doesn't start a real local server and only serves from the file system, we get CORS security errors when trying to run a script on a `file:///` path. Is there another way?\r\n- [x] I don't have a clue what its going to do for plots\r\n- [x] Make sure the \"webr can't load\" case is decently handled so we don't confuse people if that happens\r\n- [ ] Should `Try it` be a permanent section in the README, even on the GitHub README? It could link to the website and tell you to go there to try it live. Right now the section doesn't show up at all in the GitHub README, but that makes it float kind of awkwardly in your `README.Rmd`.\r\n- [x] Is `in_header` the right place for this? Is that being pulled into _every_ subpage?\r\n\r\n\r\nhttps://github.com/user-attachments/assets/f2011dfc-708a-4fdc-9071-ee6c6f4a64ae\r\n\r\n\r\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7807/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7807/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7806",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7806/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7806/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7806/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7806",
#> "id": 3911593590,
#> "node_id": "I_kwDOAGIUpc7pJi52",
#> "number": 7806,
#> "title": "Argument inconsistency between `case_when()` and `recode_values()`/`replace_values()`",
#> "user": {
#> "login": "sonicseamus",
#> "id": 9063807,
#> "node_id": "MDQ6VXNlcjkwNjM4MDc=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/9063807?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/sonicseamus",
#> "html_url": "https://github.com/sonicseamus",
#> "followers_url": "https://api.github.com/users/sonicseamus/followers",
#> "following_url": "https://api.github.com/users/sonicseamus/following{/other_user}",
#> "gists_url": "https://api.github.com/users/sonicseamus/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/sonicseamus/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/sonicseamus/subscriptions",
#> "organizations_url": "https://api.github.com/users/sonicseamus/orgs",
#> "repos_url": "https://api.github.com/users/sonicseamus/repos",
#> "events_url": "https://api.github.com/users/sonicseamus/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/sonicseamus/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 4,
#> "created_at": "2026-02-07T23:54:57Z",
#> "updated_at": "2026-04-23T12:16:26Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Hello, I am excited about the new dplyr verbs `recode_values()` and `replace_values()` and have been experimenting with working them into my code. However, when I was writing code, I noticed that I naturally wrote `.default =` as an argument for `recode_values()` and was surprised not to get an autocomplete. After checking the documentation, **I realized that the `.default`, `.ptype`, and `.unmatched` arguments do not have period prefixes for these new verbs, even though they do for `case_when()`.**\n\nI don't really care whether there's the prefix or not (I'm not up on my dplyr lore enough to know what qualifies an argument for having a `.` prefix), but **can we have consistency in the arguments across these three verbs?** This may well have been an intentional choice, in which case I'm curious what the rationale was! And am here to report that it was confusing, at least for this useR.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7806/reactions",
#> "total_count": 2,
#> "+1": 2,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7806/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7803",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7803/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7803/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7803/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7803",
#> "id": 3896144615,
#> "node_id": "PR_kwDOAGIUpc7Bch_C",
#> "number": 7803,
#> "title": "chore: update readme to use `.by` instead of `group_by()`",
#> "user": {
#> "login": "wurli",
#> "id": 17475731,
#> "node_id": "MDQ6VXNlcjE3NDc1NzMx",
#> "avatar_url": "https://avatars.githubusercontent.com/u/17475731?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/wurli",
#> "html_url": "https://github.com/wurli",
#> "followers_url": "https://api.github.com/users/wurli/followers",
#> "following_url": "https://api.github.com/users/wurli/following{/other_user}",
#> "gists_url": "https://api.github.com/users/wurli/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/wurli/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/wurli/subscriptions",
#> "organizations_url": "https://api.github.com/users/wurli/orgs",
#> "repos_url": "https://api.github.com/users/wurli/repos",
#> "events_url": "https://api.github.com/users/wurli/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/wurli/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2026-02-04T11:49:18Z",
#> "updated_at": "2026-02-04T15:21:23Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7803",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7803",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7803.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7803.patch",
#> "merged_at": {}
#> },
#> "body": "Please feel free to reject this if you prefer to keep as-is. Just thought the upcoming release might be a nice time to make this change since `.by` is no longer experimental :) \r\n\r\nThanks for the great work on the latest release!",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7803/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7803/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7792",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7792/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7792/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7792/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7792",
#> "id": 3824228200,
#> "node_id": "I_kwDOAGIUpc7j8Rdo",
#> "number": 7792,
#> "title": "no error or warning on incorrect usage of `between()`",
#> "user": {
#> "login": "EmilHvitfeldt",
#> "id": 14034784,
#> "node_id": "MDQ6VXNlcjE0MDM0Nzg0",
#> "avatar_url": "https://avatars.githubusercontent.com/u/14034784?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/EmilHvitfeldt",
#> "html_url": "https://github.com/EmilHvitfeldt",
#> "followers_url": "https://api.github.com/users/EmilHvitfeldt/followers",
#> "following_url": "https://api.github.com/users/EmilHvitfeldt/following{/other_user}",
#> "gists_url": "https://api.github.com/users/EmilHvitfeldt/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/EmilHvitfeldt/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/EmilHvitfeldt/subscriptions",
#> "organizations_url": "https://api.github.com/users/EmilHvitfeldt/orgs",
#> "repos_url": "https://api.github.com/users/EmilHvitfeldt/repos",
#> "events_url": "https://api.github.com/users/EmilHvitfeldt/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/EmilHvitfeldt/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 2,
#> "created_at": "2026-01-17T02:01:21Z",
#> "updated_at": "2026-03-20T02:18:30Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "The main title of the function reads \"Detect where values fall in a specified range\" which, if you don't read further, suggest that the following code could also be okay. Which it of cause isn't because it is shorthand for `x >= left & x <= right`\n\n``` r\ndplyr::between(4, 10, 2)\n#> [1] FALSE\n```\n\nWould it be unreasonably to ask that a warning/error is thrown if `right < left`? I would imagine it would catch some issues for people",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7792/reactions",
#> "total_count": 2,
#> "+1": 2,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7792/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7787",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7787/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7787/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7787/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7787",
#> "id": 3779408081,
#> "node_id": "I_kwDOAGIUpc7hRTDR",
#> "number": 7787,
#> "title": "dplyr verbs remove attributes of classed columns",
#> "user": {
#> "login": "DanChaltiel",
#> "id": 15105152,
#> "node_id": "MDQ6VXNlcjE1MTA1MTUy",
#> "avatar_url": "https://avatars.githubusercontent.com/u/15105152?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DanChaltiel",
#> "html_url": "https://github.com/DanChaltiel",
#> "followers_url": "https://api.github.com/users/DanChaltiel/followers",
#> "following_url": "https://api.github.com/users/DanChaltiel/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DanChaltiel/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DanChaltiel/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DanChaltiel/subscriptions",
#> "organizations_url": "https://api.github.com/users/DanChaltiel/orgs",
#> "repos_url": "https://api.github.com/users/DanChaltiel/repos",
#> "events_url": "https://api.github.com/users/DanChaltiel/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DanChaltiel/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2026-01-04T16:24:45Z",
#> "updated_at": "2026-03-24T14:35:50Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "## Problem description\n\nHi, \n\nThis issue is based on https://github.com/tidyverse/dplyr/issues/7630, which was closed.\n\nThe initial problem was that `filter()` removes labels from glue variables.\nThe proposed solution was to use `haven::labelled()`, which works for simple, atomic classes like `glue`.\nUnfortunately, it does not work for more complex ones.\n\nThis issue could belong in multiple repositories, so please move it as you think is best: \n- `dplyr`, if verbs should restore attributes after using `vctrs`\n- `vctrs`, if the problem lies somewhere in the vectorization process\n\n\n### Case 1: `difftime()`\n\nIf one column is a classed vector, like a `difftime` which is used a lot, `haven::labelled()` will drop the class and attributes (like `units` here), returning a plain labelled double, shown as `<dbl+lbl>`, instead of a difftime, or `drtn` in a tibble.\n\nSo we have two options:\n- we use the base system with `attr(label=\"\")` and dplyr verbs are not usable, \n- or we use the `haven` system and the classed columns are not usable.\n\n``` r\nlibrary(tidyverse)\ntest = tibble(\n time_attr_lab = Sys.Date()-Sys.Date()+1,\n time_haven_lab = time_attr_lab\n)\ntest$time_haven_lab = haven::labelled(test$time_haven_lab, label=\"haven difftime\")\nattr(test$time_attr_lab, \"label\") = \"attr difftime\"\n\n#haven::labelled() drops the class\ndput(test$time_attr_lab)\n#> structure(1, class = \"difftime\", units = \"days\", label = \"attr difftime\")\ndput(test$time_haven_lab)\n#> structure(1, label = \"haven difftime\", class = c(\"haven_labelled\", \"vctrs_vctr\", \"double\"))\n\n#but keeps the label with dplyr verbs\ntest %>% filter(TRUE) %>% labelled::get_variable_labels()\n#> $time_attr_lab\n#> NULL\n#> \n#> $time_haven_lab\n#> [1] \"haven difftime\"\n```\n\n<sup>Created on 2026-03-24 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n\n\n\n\n### Case 2: `survival::Surv()`\n\nIf a column is a Surv object, i.e. a classed matrix, `haven::labelled()` will fail with an error. This is a problem in haven, one that will probably be deemed minor. The 2-row matrix is flattened to a length 4 vector, which doesn't fit the 2-row tibble. Using labelled works fine.\n\n``` r\nlibrary(tidyverse)\ntest = tibble(\n surv = survival::Surv(5:6, event=1:0),\n)\ntest$surv = haven::labelled(test$surv, label=\"Survival\")\n#> Error in `$<-`:\n#> ! Assigned data `haven::labelled(test$surv, label = \"Survival\")` must be\n#> compatible with existing data.\n#> ✖ Existing data has 2 rows.\n#> ✖ Assigned data has 4 rows.\n#> ℹ Only vectors of size 1 are recycled.\n#> Caused by error in `vectbl_recycle_rhs_rows()`:\n#> ! Can't recycle input of size 4 to size 2.\n\ntest %>%\n labelled::set_variable_labels(surv=\"survival\") %>%\n labelled::get_variable_labels()\n#> $surv\n#> [1] \"survival\"\n```\n\n<sup>Created on 2026-03-24 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n## Conclusion\n\nI'm pretty sure this is a regression, as I don't recall experiencing this in previous versions of `dplyr`, although I cannot tell when.\nUnfortunately, this breaks things all over my codebase, as labels are an essential feature for data reporting.\n\nIs there another solution apart from the one from #7630?\nI'm willing to dig into `vctrs` to implement a better labelled class if needed\nOtherwise, would it be possible to restore attributes after using `vctrs` inside `dplyr` verbs?\n\nThank you very much for considering this issue and for your work on this package.\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7787/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7787/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7786",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7786/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7786/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7786/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7786",
#> "id": 3754487277,
#> "node_id": "I_kwDOAGIUpc7fyO3t",
#> "number": 7786,
#> "title": "Stop exporting `data_frame()` and `as_data_frame()` from tibble?",
#> "user": {
#> "login": "olivroy",
#> "id": 52606734,
#> "node_id": "MDQ6VXNlcjUyNjA2NzM0",
#> "avatar_url": "https://avatars.githubusercontent.com/u/52606734?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/olivroy",
#> "html_url": "https://github.com/olivroy",
#> "followers_url": "https://api.github.com/users/olivroy/followers",
#> "following_url": "https://api.github.com/users/olivroy/following{/other_user}",
#> "gists_url": "https://api.github.com/users/olivroy/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/olivroy/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/olivroy/subscriptions",
#> "organizations_url": "https://api.github.com/users/olivroy/orgs",
#> "repos_url": "https://api.github.com/users/olivroy/repos",
#> "events_url": "https://api.github.com/users/olivroy/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/olivroy/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-12-22T16:55:39Z",
#> "updated_at": "2025-12-22T16:55:39Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "they were deprecated in tibble 2.0, (2019) and create a bit of noise in the autocomplete. Removing them from dplyr would be the first step of removing them from tibble.\n\nUnless, it is planned to make them defunct in tibble first, then removing them from both tibble and dplyr at the same time?",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7786/reactions",
#> "total_count": 2,
#> "+1": 2,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7786/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7785",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7785/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7785/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7785/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7785",
#> "id": 3751544003,
#> "node_id": "I_kwDOAGIUpc7fnATD",
#> "number": 7785,
#> "title": "Across gives unclear error when function returns incorrect length output",
#> "user": {
#> "login": "billdenney",
#> "id": 10359931,
#> "node_id": "MDQ6VXNlcjEwMzU5OTMx",
#> "avatar_url": "https://avatars.githubusercontent.com/u/10359931?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/billdenney",
#> "html_url": "https://github.com/billdenney",
#> "followers_url": "https://api.github.com/users/billdenney/followers",
#> "following_url": "https://api.github.com/users/billdenney/following{/other_user}",
#> "gists_url": "https://api.github.com/users/billdenney/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/billdenney/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/billdenney/subscriptions",
#> "organizations_url": "https://api.github.com/users/billdenney/orgs",
#> "repos_url": "https://api.github.com/users/billdenney/repos",
#> "events_url": "https://api.github.com/users/billdenney/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/billdenney/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-12-21T19:58:42Z",
#> "updated_at": "2025-12-21T19:58:42Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "In the example below, the function gives a 2-length result for a 1-length input. (My real case to generate this error involved changing levels for a factor, and the return value for the function was the levels and not the factor variable.)\n\nCan the error message please be improved from \n\n```\n#> ! Can't compute column `A`.\n#> Caused by error in `dplyr_internal_error()`:\n```\n\nTo something indicating that the return value's length is incorrect?\n\n``` r\nlibrary(dplyr)\n#> \n#> Attaching package: 'dplyr'\n#> The following objects are masked from 'package:stats':\n#> \n#> filter, lag\n#> The following objects are masked from 'package:base':\n#> \n#> intersect, setdiff, setequal, union\nd_test <- data.frame(A = 1)\ngive_two <- function(x) {\n 1:2\n}\nmutate(d_test, across(\"A\", give_two))\n#> Error in `mutate()`:\n#> ℹ In argument: `across(\"A\", give_two)`.\n#> Caused by error in `across()`:\n#> ! Can't compute column `A`.\n#> Caused by error in `dplyr_internal_error()`:\n```\n\n<sup>Created on 2025-12-21 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7785/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7785/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7781",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7781/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7781/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7781/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7781",
#> "id": 3716398113,
#> "node_id": "I_kwDOAGIUpc7dg7wh",
#> "number": 7781,
#> "title": "slice_sample does not restrict sampling to n() within a group when replace=TRUE.",
#> "user": {
#> "login": "tlyons253",
#> "id": 28571872,
#> "node_id": "MDQ6VXNlcjI4NTcxODcy",
#> "avatar_url": "https://avatars.githubusercontent.com/u/28571872?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/tlyons253",
#> "html_url": "https://github.com/tlyons253",
#> "followers_url": "https://api.github.com/users/tlyons253/followers",
#> "following_url": "https://api.github.com/users/tlyons253/following{/other_user}",
#> "gists_url": "https://api.github.com/users/tlyons253/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/tlyons253/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/tlyons253/subscriptions",
#> "organizations_url": "https://api.github.com/users/tlyons253/orgs",
#> "repos_url": "https://api.github.com/users/tlyons253/repos",
#> "events_url": "https://api.github.com/users/tlyons253/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/tlyons253/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 4,
#> "created_at": "2025-12-10T18:51:54Z",
#> "updated_at": "2026-06-02T14:59:06Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "I've been playing around with slice_sample on grouped data frames for bootstrapping. The documentation states that if you provide a prop>1 or n> # of rows within a group, it will only sample the number of rows within a group. If you have replace=TRUE, that's not respected and you get as many samples per group as you request. I thought it was going to be a slick way to handle resampling from groups with different numbers of observations",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7781/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7781/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7779",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7779/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7779/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7779/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7779",
#> "id": 3686960331,
#> "node_id": "I_kwDOAGIUpc7bwozL",
#> "number": 7779,
#> "title": "Deprecate `sql_*` and `db_*`",
#> "user": {
#> "login": "hadley",
#> "id": 4196,
#> "node_id": "MDQ6VXNlcjQxOTY=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/4196?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/hadley",
#> "html_url": "https://github.com/hadley",
#> "followers_url": "https://api.github.com/users/hadley/followers",
#> "following_url": "https://api.github.com/users/hadley/following{/other_user}",
#> "gists_url": "https://api.github.com/users/hadley/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/hadley/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/hadley/subscriptions",
#> "organizations_url": "https://api.github.com/users/hadley/orgs",
#> "repos_url": "https://api.github.com/users/hadley/repos",
#> "events_url": "https://api.github.com/users/hadley/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/hadley/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-12-02T18:00:52Z",
#> "updated_at": "2025-12-02T18:00:52Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "The next version of dbplyr will no longer need them (https://github.com/tidyverse/dbplyr/pull/1651) so we can deprecate and then likely delete soon after.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7779/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7779/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7774",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7774/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7774/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7774/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7774",
#> "id": 3651717964,
#> "node_id": "I_kwDOAGIUpc7ZqMtM",
#> "number": 7774,
#> "title": "Using related columns in `cur_column()` with `across()`",
#> "user": {
#> "login": "olivroy",
#> "id": 52606734,
#> "node_id": "MDQ6VXNlcjUyNjA2NzM0",
#> "avatar_url": "https://avatars.githubusercontent.com/u/52606734?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/olivroy",
#> "html_url": "https://github.com/olivroy",
#> "followers_url": "https://api.github.com/users/olivroy/followers",
#> "following_url": "https://api.github.com/users/olivroy/following{/other_user}",
#> "gists_url": "https://api.github.com/users/olivroy/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/olivroy/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/olivroy/subscriptions",
#> "organizations_url": "https://api.github.com/users/olivroy/orgs",
#> "repos_url": "https://api.github.com/users/olivroy/repos",
#> "events_url": "https://api.github.com/users/olivroy/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/olivroy/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-11-21T13:36:07Z",
#> "updated_at": "2026-01-04T17:21:22Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "Hello!\nI would like to write code with dplyr + across. for this:\n\nWhere x = x_1 + x_2, y = y_1 + y+2, etc.\n\n```r\ntibble(\n x = c(100, 50, 20),\n x_1 = c(20, 30, 10),\n x_2 = c(80, 20, 10),\n y = c(20, 12, 12),\n y_1 = c(15, 10, 2),\n y_2 = c(5, 2, 10)\n) |>\n mutate(\n across(matches(\"\\\\d$\"), \\(column) column / .data[[stringr::str_remove(col_name, \"_\\\\d\")\n )\n```\n\nI wonder it would be possible to add a helper like `cur_col_name()` for example that returns a string that I could manipulate to extract another column name\n\nThanks",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7774/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7774/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7773",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7773/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7773/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7773/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7773",
#> "id": 3647691384,
#> "node_id": "I_kwDOAGIUpc7Za1p4",
#> "number": 7773,
#> "title": "count function needs guard rails that name shouldn't be an existing column",
#> "user": {
#> "login": "szimmer",
#> "id": 8659598,
#> "node_id": "MDQ6VXNlcjg2NTk1OTg=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/8659598?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/szimmer",
#> "html_url": "https://github.com/szimmer",
#> "followers_url": "https://api.github.com/users/szimmer/followers",
#> "following_url": "https://api.github.com/users/szimmer/following{/other_user}",
#> "gists_url": "https://api.github.com/users/szimmer/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/szimmer/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/szimmer/subscriptions",
#> "organizations_url": "https://api.github.com/users/szimmer/orgs",
#> "repos_url": "https://api.github.com/users/szimmer/repos",
#> "events_url": "https://api.github.com/users/szimmer/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/szimmer/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 2,
#> "created_at": "2025-11-20T15:03:46Z",
#> "updated_at": "2026-02-23T14:02:23Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "If you use the count function and set name to be one of the existing columns you are tabulating on, you get unexpected results. This should yield either an error or a note that the name had to be modified.\n\n``` r\nlibrary(dplyr)\n#> \n#> Attaching package: 'dplyr'\n#> The following objects are masked from 'package:stats':\n#> \n#> filter, lag\n#> The following objects are masked from 'package:base':\n#> \n#> intersect, setdiff, setequal, union\nmydat <- tibble(x=rep(c(1,2), 5))\nmydat |>\n count(x)\n#> # A tibble: 2 × 2\n#> x n\n#> <dbl> <int>\n#> 1 1 5\n#> 2 2 5\nmydat |>\n count(x, name=\"x\")\n#> # A tibble: 2 × 1\n#> x\n#> <int>\n#> 1 5\n#> 2 5\n```\n\n<sup>Created on 2025-11-20 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n<details style=\"margin-bottom:10px;\">\n\n<summary>\n\nSession info\n<\/summary>\n\n``` r\nsessioninfo::session_info()\n#> ─ Session info ───────────────────────────────────────────────────────────────\n#> setting value\n#> version R version 4.5.1 (2025-06-13 ucrt)\n#> os Windows 11 x64 (build 22631)\n#> system x86_64, mingw32\n#> ui RTerm\n#> language (EN)\n#> collate English_United States.utf8\n#> ctype English_United States.utf8\n#> tz America/New_York\n#> date 2025-11-20\n#> pandoc 3.6.3 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)\n#> quarto 1.8.24 @ C:\\\\Users\\\\sazimmer\\\\AppData\\\\Local\\\\Programs\\\\Quarto\\\\bin\\\\quarto.exe\n#> \n#> ─ Packages ───────────────────────────────────────────────────────────────────\n#> package * version date (UTC) lib source\n#> cli 3.6.5 2025-04-23 [1] CRAN (R 4.5.0)\n#> digest 0.6.37 2024-08-19 [1] CRAN (R 4.5.0)\n#> dplyr * 1.1.4 2023-11-17 [1] CRAN (R 4.5.0)\n#> evaluate 1.0.5 2025-08-27 [1] RSPM (R 4.5.0)\n#> fastmap 1.2.0 2024-05-15 [1] CRAN (R 4.5.0)\n#> fs 1.6.6 2025-04-12 [1] CRAN (R 4.5.0)\n#> generics 0.1.4 2025-05-09 [1] CRAN (R 4.5.0)\n#> glue 1.8.0 2024-09-30 [1] CRAN (R 4.5.0)\n#> htmltools 0.5.8.1 2024-04-04 [1] CRAN (R 4.5.0)\n#> knitr 1.50 2025-03-16 [1] CRAN (R 4.5.0)\n#> lifecycle 1.0.4 2023-11-07 [1] CRAN (R 4.5.0)\n#> magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.5.0)\n#> pillar 1.11.0 2025-07-04 [1] RSPM (R 4.5.0)\n#> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.5.0)\n#> R6 2.6.1 2025-02-15 [1] CRAN (R 4.5.0)\n#> reprex 2.1.1 2024-07-06 [1] CRAN (R 4.5.0)\n#> rlang 1.1.6 2025-04-11 [1] CRAN (R 4.5.0)\n#> rmarkdown 2.29 2024-11-04 [1] CRAN (R 4.5.0)\n#> rstudioapi 0.17.1 2024-10-22 [1] CRAN (R 4.5.0)\n#> sessioninfo 1.2.3.9000 2025-09-18 [1] Github (r-lib/sessioninfo@ec4dd0c)\n#> tibble 3.3.0 2025-06-08 [1] RSPM (R 4.5.0)\n#> tidyselect 1.2.1 2024-03-11 [1] CRAN (R 4.5.0)\n#> vctrs 0.6.5 2023-12-01 [1] CRAN (R 4.5.0)\n#> withr 3.0.2 2024-10-28 [1] CRAN (R 4.5.0)\n#> xfun 0.53 2025-08-19 [1] RSPM (R 4.5.0)\n#> yaml 2.3.10 2024-07-26 [1] CRAN (R 4.5.0)\n#> \n#> [1] C:/Users/sazimmer/AppData/Local/R/win-library/4.5\n#> [2] C:/Program Files/R/R-4.5.1/library\n#> * ── Packages attached to the search path.\n#> \n#> ──────────────────────────────────────────────────────────────────────────────\n```\n\n<\/details>\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7773/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7773/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7712",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7712/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7712/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7712/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7712",
#> "id": 3428955607,
#> "node_id": "I_kwDOAGIUpc7MYbXX",
#> "number": 7712,
#> "title": "Add `bounds` to `dplyr::between()`",
#> "user": {
#> "login": "ScientiaFelis",
#> "id": 29957279,
#> "node_id": "MDQ6VXNlcjI5OTU3Mjc5",
#> "avatar_url": "https://avatars.githubusercontent.com/u/29957279?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/ScientiaFelis",
#> "html_url": "https://github.com/ScientiaFelis",
#> "followers_url": "https://api.github.com/users/ScientiaFelis/followers",
#> "following_url": "https://api.github.com/users/ScientiaFelis/following{/other_user}",
#> "gists_url": "https://api.github.com/users/ScientiaFelis/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/ScientiaFelis/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/ScientiaFelis/subscriptions",
#> "organizations_url": "https://api.github.com/users/ScientiaFelis/orgs",
#> "repos_url": "https://api.github.com/users/ScientiaFelis/repos",
#> "events_url": "https://api.github.com/users/ScientiaFelis/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/ScientiaFelis/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 3,
#> "created_at": "2025-09-18T07:03:23Z",
#> "updated_at": "2025-10-13T02:44:57Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "The docs of `between()` say:\n\n `This is a shortcut for x >= left & x <= right`\n\nIt would be nice to be able to set `between()` to exclude the values of `x` and `y`, that is equal to\n\n`x > left & x < right`\n\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7712/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7712/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7702",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7702/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7702/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7702/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7702",
#> "id": 3246229211,
#> "node_id": "I_kwDOAGIUpc7BfYbb",
#> "number": 7702,
#> "title": "`between()` doesn't work if `x` is `Date` and `left` and `right` are character",
#> "user": {
#> "login": "etiennebacher",
#> "id": 52219252,
#> "node_id": "MDQ6VXNlcjUyMjE5MjUy",
#> "avatar_url": "https://avatars.githubusercontent.com/u/52219252?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/etiennebacher",
#> "html_url": "https://github.com/etiennebacher",
#> "followers_url": "https://api.github.com/users/etiennebacher/followers",
#> "following_url": "https://api.github.com/users/etiennebacher/following{/other_user}",
#> "gists_url": "https://api.github.com/users/etiennebacher/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/etiennebacher/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/etiennebacher/subscriptions",
#> "organizations_url": "https://api.github.com/users/etiennebacher/orgs",
#> "repos_url": "https://api.github.com/users/etiennebacher/repos",
#> "events_url": "https://api.github.com/users/etiennebacher/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/etiennebacher/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 674867158,
#> "node_id": "MDU6TGFiZWw2NzQ4NjcxNTg=",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/documentation",
#> "name": "documentation",
#> "color": "CBBAB8",
#> "default": true,
#> "description": ""
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-07-20T10:08:39Z",
#> "updated_at": "2025-09-08T17:47:12Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "The docs of `between()` say:\n\n> This is a shortcut for `x >= left & x <= right`\n\nHowever, `between()` doesn't work if `x` is `Date` and `left` and `right` are character, while `<=` and `>=` work:\n\n``` r\nlibrary(dplyr, warn.conflicts = FALSE)\npackageVersion(\"dplyr\")\n#> [1] '1.1.4.9000'\n\nx <- as.Date(\"2010-01-02\")\nx >= \"2010-01-01\" & x <= \"2010-01-04\"\n#> [1] TRUE\n\nbetween(x, \"2010-01-01\", \"2010-01-04\")\n#> Error in `between()`:\n#> ! Can't combine `x` <date> and `left` <character>.\n```\n\nThe \"Details\" section says:\n\n> `x`, `left`, and `right` are all cast to their common type before the comparison is made.\n\nbut maybe it's worth updating the first line or mention somewhere that characters and dates are not compatible?\n\nMaybe related to https://github.com/r-lib/vctrs/issues/967",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7702/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7702/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7695",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7695/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7695/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7695/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7695",
#> "id": 3158138822,
#> "node_id": "I_kwDOAGIUpc68PV_G",
#> "number": 7695,
#> "title": "Make `add_tally()` S3 generic?",
#> "user": {
#> "login": "etiennebacher",
#> "id": 52219252,
#> "node_id": "MDQ6VXNlcjUyMjE5MjUy",
#> "avatar_url": "https://avatars.githubusercontent.com/u/52219252?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/etiennebacher",
#> "html_url": "https://github.com/etiennebacher",
#> "followers_url": "https://api.github.com/users/etiennebacher/followers",
#> "following_url": "https://api.github.com/users/etiennebacher/following{/other_user}",
#> "gists_url": "https://api.github.com/users/etiennebacher/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/etiennebacher/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/etiennebacher/subscriptions",
#> "organizations_url": "https://api.github.com/users/etiennebacher/orgs",
#> "repos_url": "https://api.github.com/users/etiennebacher/repos",
#> "events_url": "https://api.github.com/users/etiennebacher/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/etiennebacher/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 17708200,
#> "node_id": "MDU6TGFiZWwxNzcwODIwMA==",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/feature",
#> "name": "feature",
#> "color": "B4C3AE",
#> "default": false,
#> "description": "a feature request or enhancement"
#> },
#> {
#> "id": 4040664455,
#> "node_id": "LA_kwDOAGIUpc7w16WH",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/counting%20:abacus:",
#> "name": "counting :abacus:",
#> "color": "eeeeee",
#> "default": false,
#> "description": ""
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 3,
#> "created_at": "2025-06-18T20:56:57Z",
#> "updated_at": "2026-05-24T22:16:08Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "CONTRIBUTOR",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "`count()`, `add_count()`, and `tally()` are generics but `add_tally()` is not:\n\n``` r\nsloop::is_s3_generic(\"count\", env = getNamespace(\"dplyr\"))\n#> [1] TRUE\nsloop::is_s3_generic(\"add_count\", env = getNamespace(\"dplyr\"))\n#> [1] TRUE\nsloop::is_s3_generic(\"tally\", env = getNamespace(\"dplyr\"))\n#> [1] TRUE\nsloop::is_s3_generic(\"add_tally\", env = getNamespace(\"dplyr\"))\n#> [1] FALSE\n```\n\nIs it possible to make `add_tally()` generic?\n\nIt looks like this was already planned in https://github.com/tidyverse/dplyr/issues/3739 but `add_tally()` was forgotten.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7695/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7695/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7693",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7693/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7693/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7693/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7693",
#> "id": 3130310206,
#> "node_id": "I_kwDOAGIUpc66lL4-",
#> "number": 7693,
#> "title": "Internal error in `summarise()`",
#> "user": {
#> "login": "DavisVaughan",
#> "id": 19150088,
#> "node_id": "MDQ6VXNlcjE5MTUwMDg4",
#> "avatar_url": "https://avatars.githubusercontent.com/u/19150088?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DavisVaughan",
#> "html_url": "https://github.com/DavisVaughan",
#> "followers_url": "https://api.github.com/users/DavisVaughan/followers",
#> "following_url": "https://api.github.com/users/DavisVaughan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DavisVaughan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DavisVaughan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DavisVaughan/subscriptions",
#> "organizations_url": "https://api.github.com/users/DavisVaughan/orgs",
#> "repos_url": "https://api.github.com/users/DavisVaughan/repos",
#> "events_url": "https://api.github.com/users/DavisVaughan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DavisVaughan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 17708198,
#> "node_id": "MDU6TGFiZWwxNzcwODE5OA==",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/bug",
#> "name": "bug",
#> "color": "E0B3A2",
#> "default": true,
#> "description": "an unexpected problem or unintended behavior"
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-06-09T13:25:44Z",
#> "updated_at": "2025-09-08T19:13:16Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "``` r\nlibrary(dplyr)\n\npenguins |>\n summarize(\n .by = species,\n across(everything(), identity),\n spline = data.frame(spline(bill_len, bill_dep, n=4L))\n )\n#> Error in names(dots)[[i]]: subscript out of bounds\n```\n\nSeems like `i` is 8, and `dots` is only length 2\n\n<img width=\"1457\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/648d4f05-e525-4afe-84e1-7bb6d48badf3\" />\n\nI think `i` is the post-expanded index, i.e. it increments by 1 after _each column_ `across(everything(), identity)` is applied to (7 cols), but we wanted the index incremented by 1 after _each expression_ that we run, i.e. `across(everything(), identity)` should count as 1 in total.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7693/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7693/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7692",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7692/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7692/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7692/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7692",
#> "id": 3130050652,
#> "node_id": "I_kwDOAGIUpc66kMhc",
#> "number": 7692,
#> "title": "`across(.names =)` evaluates `\"{col}\"` as if it was `\"{.col}\"`",
#> "user": {
#> "login": "arnaudgallou",
#> "id": 67476099,
#> "node_id": "MDQ6VXNlcjY3NDc2MDk5",
#> "avatar_url": "https://avatars.githubusercontent.com/u/67476099?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/arnaudgallou",
#> "html_url": "https://github.com/arnaudgallou",
#> "followers_url": "https://api.github.com/users/arnaudgallou/followers",
#> "following_url": "https://api.github.com/users/arnaudgallou/following{/other_user}",
#> "gists_url": "https://api.github.com/users/arnaudgallou/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/arnaudgallou/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/arnaudgallou/subscriptions",
#> "organizations_url": "https://api.github.com/users/arnaudgallou/orgs",
#> "repos_url": "https://api.github.com/users/arnaudgallou/repos",
#> "events_url": "https://api.github.com/users/arnaudgallou/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/arnaudgallou/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-06-09T11:41:35Z",
#> "updated_at": "2025-06-09T13:34:30Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "It doesn't seem to be the expected behavior according to the documentation.\n\n``` r\ncol <- \"foo\"\n\ntibble::tibble(\n x = 1:3,\n y = 4:6\n) |> \n dplyr::mutate(\n dplyr::across(c(x, y), \\(.x) .x * 2, .names = \"{col}_{.col}\")\n )\n#> # A tibble: 3 × 4\n#> x y x_x y_y\n#> <int> <int> <dbl> <dbl>\n#> 1 1 4 2 8\n#> 2 2 5 4 10\n#> 3 3 6 6 12\n\npackageVersion(\"dplyr\")\n#> [1] '1.1.4'\n```\n\n<sup>Created on 2025-06-09 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7692/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7692/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7668",
#> "id": 2905299014,
#> "node_id": "I_kwDOAGIUpc6tK1hG",
#> "number": 7668,
#> "title": "`tbl_vars()` accesses `nrow()` unnecessarily",
#> "user": {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 17708198,
#> "node_id": "MDU6TGFiZWwxNzcwODE5OA==",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/bug",
#> "name": "bug",
#> "color": "E0B3A2",
#> "default": true,
#> "description": "an unexpected problem or unintended behavior"
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-03-09T09:04:12Z",
#> "updated_at": "2025-09-08T19:19:45Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "MEMBER",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "This currently affects joins with `library(duckplyr)` . I can work around, perhaps we find a nicer way.\n\nDifficult to show with current duckplyr because we have our `group_vars()` method. The calling sequence goes as follows:\n\n- `tbl_vars()` calls `group_vars()` in the generic\n- `group_vars.data.frame()` calls `names(group_data())`\n- `group_data()` needs `nrow()`\n\nPerhaps we can implement an ALTREP solution for `group_vars()` ? Or add an argument to `group_data()` that indicates we really only care about the names?\n\nRelevant backtrace from a debugging session:\n\n```\nBacktrace:\n ▆\n 1. ├─testthat::expect_error(...) at test-tpch.R:245:3\n 2. │ └─testthat:::expect_condition_matching(...)\n 3. │ └─testthat:::quasi_capture(...)\n 4. │ ├─testthat (local) .capture(...)\n 5. │ │ └─base::withCallingHandlers(...)\n 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo))\n 7. └─duckplyr:::tpch_02() at test-tpch.R:247:5\n 8. ├─dplyr::inner_join(na_matches = TPCH_NA_MATCHES, p, ps, by = c(p_partkey = \"ps_partkey\")) at duckplyr/R/tpch.R:35:3\n 9. └─duckplyr (local) inner_join.data.frame(na_matches = TPCH_NA_MATCHES, p, ps, by = c(p_partkey = \"ps_partkey\"))\n 10. ├─duckplyr:::rel_try(...) at duckplyr/R/inner_join.R:10:3\n 11. │ └─base::force(rel) at duckplyr/R/relational.R:62:5\n 12. └─duckplyr:::rel_join_impl(...) at duckplyr/R/inner_join.R:22:7\n 13. └─duckplyr:::tbl_vars_safe(x) at duckplyr/R/join.R:19:3\n 14. └─dplyr::tbl_vars(x) at duckplyr/R/join.R:142:3\n 15. ├─dplyr:::new_sel_vars(tbl_vars_dispatch(x), group_vars(x))\n 16. │ └─base::structure(...)\n 17. ├─dplyr::group_vars(x)\n 18. └─dplyr:::group_vars.data.frame(x)\n 19. ├─generics::setdiff(names(group_data(x)), \".rows\")\n 20. ├─dplyr::group_data(x)\n 21. └─dplyr:::group_data.data.frame(x)\n 22. └─base::nrow(.data)\n 23. ├─base::dim(x)\n 24. └─base::dim.data.frame(x)\n 25. └─base::.row_names_info(x, 2L)\n```",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7657",
#> "id": 2848600494,
#> "node_id": "I_kwDOAGIUpc6pyjGu",
#> "number": 7657,
#> "title": "reframe with across returns an unhelpful error message",
#> "user": {
#> "login": "const-ae",
#> "id": 5359014,
#> "node_id": "MDQ6VXNlcjUzNTkwMTQ=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/5359014?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/const-ae",
#> "html_url": "https://github.com/const-ae",
#> "followers_url": "https://api.github.com/users/const-ae/followers",
#> "following_url": "https://api.github.com/users/const-ae/following{/other_user}",
#> "gists_url": "https://api.github.com/users/const-ae/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/const-ae/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/const-ae/subscriptions",
#> "organizations_url": "https://api.github.com/users/const-ae/orgs",
#> "repos_url": "https://api.github.com/users/const-ae/repos",
#> "events_url": "https://api.github.com/users/const-ae/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/const-ae/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 17708198,
#> "node_id": "MDU6TGFiZWwxNzcwODE5OA==",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/bug",
#> "name": "bug",
#> "color": "E0B3A2",
#> "default": true,
#> "description": "an unexpected problem or unintended behavior"
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-02-12T15:28:36Z",
#> "updated_at": "2025-09-08T19:28:56Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "When I call `reframe` with `across` and the length of the output is not consistent, the error message is a lot less helpful if the output of `across` is not named:\n\n``` r\nlibrary(tidyverse)\ntibble(x = 1:3, y = 4:6) |>\n reframe(test = across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in `reframe()`:\n#> ℹ In argument: `test = across(...)`.\n#> Caused by error in `across()`:\n#> ! Can't recycle `..1` (size 3) to match `..2` (size 12).\n\ntibble(x = 1:3, y = 4:6) |>\n reframe(across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in names(dots)[[i]]: subscript out of bounds\n```\n\n<sup>Created on 2025-02-12 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\nThe situation is slightly better with `mutate`:\n\n``` r\nlibrary(tidyverse)\ntibble(x = 1:3, y = 4:6) |>\n mutate(test = across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in `mutate()`:\n#> ℹ In argument: `test = across(...)`.\n#> Caused by error in `across()`:\n#> ! Can't recycle `..1` (size 3) to match `..2` (size 12).\n\ntibble(x = 1:3, y = 4:6) |>\n mutate(across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in `mutate()`:\n#> ℹ In argument: `across(...)`.\n#> Caused by error in `across()`:\n#> ! Can't compute column `y`.\n#> Caused by error in `dplyr_internal_error()`:\n```\n\n<sup>Created on 2025-02-12 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n<details style=\"margin-bottom:10px;\">\n<summary>\nSession info\n<\/summary>\n\n``` r\nsessioninfo::session_info()\n#> ─ Session info ───────────────────────────────────────────────────────────────\n#> setting value\n#> version R version 4.4.1 (2024-06-14)\n#> os macOS Sonoma 14.6\n#> system aarch64, darwin20\n#> ui X11\n#> language (EN)\n#> collate en_US.UTF-8\n#> ctype en_US.UTF-8\n#> tz Europe/London\n#> date 2025-02-12\n#> pandoc 3.2 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)\n#> \n#> ─ Packages ───────────────────────────────────────────────────────────────────\n#> ! package * version date (UTC) lib source\n#> P cli 3.6.3 2024-06-21 [?] CRAN (R 4.4.0)\n#> P colorspace 2.1-1 2024-07-26 [?] CRAN (R 4.4.0)\n#> P digest 0.6.37 2024-08-19 [?] CRAN (R 4.4.1)\n#> P dplyr * 1.1.4 2023-11-17 [?] CRAN (R 4.4.0)\n#> P evaluate 1.0.3 2025-01-10 [?] CRAN (R 4.4.1)\n#> P fansi 1.0.6 2023-12-08 [?] CRAN (R 4.4.0)\n#> P fastmap 1.2.0 2024-05-15 [?] CRAN (R 4.4.0)\n#> P forcats * 1.0.0 2023-01-29 [?] CRAN (R 4.4.0)\n#> P fs 1.6.5 2024-10-30 [?] CRAN (R 4.4.1)\n#> P generics 0.1.3 2022-07-05 [?] CRAN (R 4.4.0)\n#> P ggplot2 * 3.5.1 2024-04-23 [?] CRAN (R 4.4.0)\n#> P glue 1.8.0 2024-09-30 [?] CRAN (R 4.4.1)\n#> P gtable 0.3.6 2024-10-25 [?] CRAN (R 4.4.1)\n#> P hms 1.1.3 2023-03-21 [?] CRAN (R 4.4.0)\n#> P htmltools 0.5.8.1 2024-04-04 [?] CRAN (R 4.4.0)\n#> P knitr 1.49 2024-11-08 [?] CRAN (R 4.4.1)\n#> P lifecycle 1.0.4 2023-11-07 [?] CRAN (R 4.4.0)\n#> P lubridate * 1.9.3 2023-09-27 [?] CRAN (R 4.4.0)\n#> P magrittr 2.0.3 2022-03-30 [?] CRAN (R 4.4.0)\n#> P munsell 0.5.1 2024-04-01 [?] CRAN (R 4.4.0)\n#> P pillar 1.9.0 2023-03-22 [?] CRAN (R 4.4.0)\n#> P pkgconfig 2.0.3 2019-09-22 [?] CRAN (R 4.4.0)\n#> P purrr * 1.0.2 2023-08-10 [?] CRAN (R 4.4.0)\n#> P R6 2.5.1 2021-08-19 [?] CRAN (R 4.4.0)\n#> P readr * 2.1.5 2024-01-10 [?] CRAN (R 4.4.0)\n#> P reprex 2.1.1 2024-07-06 [?] CRAN (R 4.4.0)\n#> P rlang 1.1.4 2024-06-04 [?] CRAN (R 4.4.0)\n#> P rmarkdown 2.29 2024-11-04 [?] CRAN (R 4.4.1)\n#> P rstudioapi 0.17.1 2024-10-22 [?] CRAN (R 4.4.1)\n#> P scales 1.3.0 2023-11-28 [?] CRAN (R 4.4.0)\n#> P sessioninfo 1.2.2 2021-12-06 [?] CRAN (R 4.4.0)\n#> P stringi 1.8.4 2024-05-06 [?] CRAN (R 4.4.0)\n#> P stringr * 1.5.1 2023-11-14 [?] CRAN (R 4.4.0)\n#> P tibble * 3.2.1 2023-03-20 [?] CRAN (R 4.4.0)\n#> P tidyr * 1.3.1 2024-01-24 [?] CRAN (R 4.4.0)\n#> P tidyselect 1.2.1 2024-03-11 [?] CRAN (R 4.4.0)\n#> P tidyverse * 2.0.0 2023-02-22 [?] CRAN (R 4.4.0)\n#> P timechange 0.3.0 2024-01-18 [?] CRAN (R 4.4.0)\n#> P tzdb 0.4.0 2023-05-12 [?] CRAN (R 4.4.0)\n#> P utf8 1.2.4 2023-10-22 [?] CRAN (R 4.4.0)\n#> P vctrs 0.6.5 2023-12-01 [?] CRAN (R 4.4.0)\n#> P withr 3.0.2 2024-10-28 [?] CRAN (R 4.4.1)\n#> P xfun 0.50 2025-01-07 [?] CRAN (R 4.4.1)\n#> P yaml 2.3.10 2024-07-26 [?] CRAN (R 4.4.0)\n#> \n#> [1] /Users/ahlmanne/Documents/Work_Projects/precancer-atlas-code/renv/library/macos/R-4.4/aarch64-apple-darwin20\n#> [2] /Users/ahlmanne/Library/Caches/org.R-project.R/R/renv/sandbox/macos/R-4.4/aarch64-apple-darwin20/f7156815\n#> [3] /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library\n#> \n#> P ── Loaded and on-disk path mismatch.\n#> \n#> ──────────────────────────────────────────────────────────────────────────────\n```\n\n<\/details>",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7622",
#> "id": 2769857410,
#> "node_id": "I_kwDOAGIUpc6lGKuC",
#> "number": 7622,
#> "title": "`Mutating joins` relationship documentation issues",
#> "user": {
#> "login": "bounlu",
#> "id": 17899927,
#> "node_id": "MDQ6VXNlcjE3ODk5OTI3",
#> "avatar_url": "https://avatars.githubusercontent.com/u/17899927?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/bounlu",
#> "html_url": "https://github.com/bounlu",
#> "followers_url": "https://api.github.com/users/bounlu/followers",
#> "following_url": "https://api.github.com/users/bounlu/following{/other_user}",
#> "gists_url": "https://api.github.com/users/bounlu/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/bounlu/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/bounlu/subscriptions",
#> "organizations_url": "https://api.github.com/users/bounlu/orgs",
#> "repos_url": "https://api.github.com/users/bounlu/repos",
#> "events_url": "https://api.github.com/users/bounlu/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/bounlu/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 674867158,
#> "node_id": "MDU6TGFiZWw2NzQ4NjcxNTg=",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/documentation",
#> "name": "documentation",
#> "color": "CBBAB8",
#> "default": true,
#> "description": ""
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-01-06T05:32:44Z",
#> "updated_at": "2025-09-08T19:43:08Z",
#> "closed_at": {},
#> "assignee": {},
#> "author_association": "NONE",
#> "issue_field_values": [],
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "issue_dependencies_summary": {
#> "blocked_by": 0,
#> "total_blocked_by": 0,
#> "blocking": 0,
#> "total_blocking": 0
#> },
#> "body": "`Mutate-joins (dplyr)` documentation says:\n\n```\nrelationship\n\nHandling of the expected relationship between the keys of x and y. If the expectations chosen from the list below are invalidated, an error is thrown.\n\nNULL, the default, doesn't expect there to be any relationship between x and y. However, for equality joins it will check for a many-to-many relationship (which is typically unexpected) and will warn if one occurs, encouraging you to either take a closer look at your inputs or make this relationship explicit by specifying \"many-to-many\".\n\nSee the Many-to-many relationships section for more details.\n\n\"one-to-one\" expects:\nEach row in x matches at most 1 row in y.\nEach row in y matches at most 1 row in x.\n\n\"one-to-many\" expects:\nEach row in y matches at most 1 row in x.\n\n\"many-to-one\" expects:\nEach row in x matches at most 1 row in y.\n\n\"many-to-many\" doesn't perform any relationship checks, but is provided to allow you to be explicit about this relationship if you know it exists.\n\nrelationship doesn't handle cases where there are zero matches. For that, see unmatched.\n```\n\nI see there are 2 issues:\n\n1. `one-to-many` and `many-to-one` description looks awkward and reversed to me. Logically, it should specify from left to right, x -> y. So `one-to-many` should mean \"Rows in x may match multiple rows in y\". Similarly, `many-to-one` should mean \"Multiple rows in x may match same row in y\".\n\n2. Specifying `relationship` explicitly as `one-to-many` or `many-to-one` do not generate any warning or error if there is no such matching in the data, i.e. if only `one-to-one` exists. I would expect an error would be thrown if the specified relationship does not exist in the matching as the documentation says, otherwise I don't get the point of specifying the relationship explicitly.\n\nI have read [this](https://github.com/tidyverse/dplyr/pull/6753) but I believe the above issues still remain to be resolved.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {},
#> "pinned_comment": {}
#> }
#> ]
## Automatic pagination
users <- gh("/users", .limit = 50)
length(users)
#> [1] 50
if (FALSE) {
## Access developer preview of Licenses API (in preview as of 2015-09-24)
gh("/licenses") # used to error code 415
gh("/licenses", .accept = "application/vnd.github.drax-preview+json")
}
if (FALSE) {
## Access Github Enterprise API
## Use GITHUB_API_URL environment variable to change the default.
gh("/user/repos", type = "public", .api_url = "https://github.foobar.edu/api/v3")
}
if (FALSE) {
## Use I() to force body part to be sent as an array, even if length 1
## This works whether assignees has length 1 or > 1
assignees <- "gh_user"
assignees <- c("gh_user1", "gh_user2")
gh("PATCH /repos/OWNER/REPO/issues/1", assignees = I(assignees))
}
if (FALSE) {
## There are two ways to send JSON data. One is that you supply one or
## more objects that will be converted to JSON automatically via
## jsonlite::toJSON(). In this case sometimes you need to use
## jsonlite::unbox() because fromJSON() creates lists from scalar vectors
## by default. The Content-Type header is automatically added in this
## case. For example this request turns on GitHub Pages, using this
## API: https://docs.github.com/v3/repos/pages/#enable-a-pages-site
gh::gh(
"POST /repos/{owner}/{repo}/pages",
owner = "r-lib",
repo = "gh",
source = list(
branch = jsonlite::unbox("gh-pages"),
path = jsonlite::unbox("/")
),
.send_headers = c(Accept = "application/vnd.github.switcheroo-preview+json")
)
## The second way is to handle the JSON encoding manually, and supply it
## as a raw vector in an unnamed argument, and also a Content-Type header:
body <- '{ "source": { "branch": "gh-pages", "path": "/" } }'
gh::gh(
"POST /repos/{owner}/{repo}/pages",
owner = "r-lib",
repo = "gh",
charToRaw(body),
.send_headers = c(
Accept = "application/vnd.github.switcheroo-preview+json",
"Content-Type" = "application/json"
)
)
}
if (FALSE) {
## Pass along a query to the search/code endpoint via the ... argument
x <- gh::gh(
"/search/code",
q = "installation repo:r-lib/gh",
.send_headers = c("X-GitHub-Api-Version" = "2022-11-28")
)
str(x, list.len = 3, give.attr = FALSE)
}