Skip to content

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,
  .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()
)

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 endpoint placeholders, 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. Named NULL values are silently dropped. For GET requests, named NA values trigger an error. For other methods, named NA values are included in the body of the request, as JSON null.

per_page

Number of items to return per page. If omitted, will be substituted by max(.limit, 100) if .limit is set, otherwise determined by the API (never greater than 100).

.token

Authentication token. Defaults to GITHUB_PAT or GITHUB_TOKEN environment variables, in this order if any is set. See gh_token() if you need more flexibility, e.g. different tokens for different GitHub Enterprise deployments.

.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.

.overwrite

If .destfile is provided, whether to overwrite an existing file. Defaults to FALSE.

.api_url

Github API url (default: https://api.github.com). Used if endpoint just contains a path. Defaults to GITHUB_API_URL environment 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 to Inf to 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 Accept HTTP header. Defaults to "application/vnd.github.v3+json" . If Accept is 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 default User-Agent header: "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.

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.

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",
#>       "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": "2019-08-18T16:49:32Z",
#>     "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": 23,
#>     "watchers_count": 23,
#>     "language": "R",
#>     "has_issues": true,
#>     "has_projects": true,
#>     "has_downloads": true,
#>     "has_wiki": true,
#>     "has_pages": 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,
#>     "topics": [],
#>     "visibility": "public",
#>     "forks": 7,
#>     "open_issues": 0,
#>     "watchers": 23,
#>     "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",
#>       "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,
#>     "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,
#>     "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",
#>       "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": "2019-08-18T16:49:32Z",
#>     "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": 23,
#>     "watchers_count": 23,
#>     "language": "R",
#>     "has_issues": true,
#>     "has_projects": true,
#>     "has_downloads": true,
#>     "has_wiki": true,
#>     "has_pages": 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,
#>     "topics": [],
#>     "visibility": "public",
#>     "forks": 7,
#>     "open_issues": 0,
#>     "watchers": 23,
#>     "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",
#>       "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,
#>     "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,
#>     "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": 10221246,
#>     "node_id": "MDEwOlJlcG9zaXRvcnkxMDIyMTI0Ng==",
#>     "name": "bigrquery",
#>     "full_name": "r-dbi/bigrquery",
#>     "private": false,
#>     "owner": {
#>       "login": "r-dbi",
#>       "id": 5695665,
#>       "node_id": "MDEyOk9yZ2FuaXphdGlvbjU2OTU2NjU=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/5695665?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/r-dbi",
#>       "html_url": "https://github.com/r-dbi",
#>       "followers_url": "https://api.github.com/users/r-dbi/followers",
#>       "following_url": "https://api.github.com/users/r-dbi/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/r-dbi/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/r-dbi/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/r-dbi/subscriptions",
#>       "organizations_url": "https://api.github.com/users/r-dbi/orgs",
#>       "repos_url": "https://api.github.com/users/r-dbi/repos",
#>       "events_url": "https://api.github.com/users/r-dbi/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/r-dbi/received_events",
#>       "type": "Organization",
#>       "site_admin": false
#>     },
#>     "html_url": "https://github.com/r-dbi/bigrquery",
#>     "description": "An interface to Google's BigQuery from R.",
#>     "fork": false,
#>     "url": "https://api.github.com/repos/r-dbi/bigrquery",
#>     "forks_url": "https://api.github.com/repos/r-dbi/bigrquery/forks",
#>     "keys_url": "https://api.github.com/repos/r-dbi/bigrquery/keys{/key_id}",
#>     "collaborators_url": "https://api.github.com/repos/r-dbi/bigrquery/collaborators{/collaborator}",
#>     "teams_url": "https://api.github.com/repos/r-dbi/bigrquery/teams",
#>     "hooks_url": "https://api.github.com/repos/r-dbi/bigrquery/hooks",
#>     "issue_events_url": "https://api.github.com/repos/r-dbi/bigrquery/issues/events{/number}",
#>     "events_url": "https://api.github.com/repos/r-dbi/bigrquery/events",
#>     "assignees_url": "https://api.github.com/repos/r-dbi/bigrquery/assignees{/user}",
#>     "branches_url": "https://api.github.com/repos/r-dbi/bigrquery/branches{/branch}",
#>     "tags_url": "https://api.github.com/repos/r-dbi/bigrquery/tags",
#>     "blobs_url": "https://api.github.com/repos/r-dbi/bigrquery/git/blobs{/sha}",
#>     "git_tags_url": "https://api.github.com/repos/r-dbi/bigrquery/git/tags{/sha}",
#>     "git_refs_url": "https://api.github.com/repos/r-dbi/bigrquery/git/refs{/sha}",
#>     "trees_url": "https://api.github.com/repos/r-dbi/bigrquery/git/trees{/sha}",
#>     "statuses_url": "https://api.github.com/repos/r-dbi/bigrquery/statuses/{sha}",
#>     "languages_url": "https://api.github.com/repos/r-dbi/bigrquery/languages",
#>     "stargazers_url": "https://api.github.com/repos/r-dbi/bigrquery/stargazers",
#>     "contributors_url": "https://api.github.com/repos/r-dbi/bigrquery/contributors",
#>     "subscribers_url": "https://api.github.com/repos/r-dbi/bigrquery/subscribers",
#>     "subscription_url": "https://api.github.com/repos/r-dbi/bigrquery/subscription",
#>     "commits_url": "https://api.github.com/repos/r-dbi/bigrquery/commits{/sha}",
#>     "git_commits_url": "https://api.github.com/repos/r-dbi/bigrquery/git/commits{/sha}",
#>     "comments_url": "https://api.github.com/repos/r-dbi/bigrquery/comments{/number}",
#>     "issue_comment_url": "https://api.github.com/repos/r-dbi/bigrquery/issues/comments{/number}",
#>     "contents_url": "https://api.github.com/repos/r-dbi/bigrquery/contents/{+path}",
#>     "compare_url": "https://api.github.com/repos/r-dbi/bigrquery/compare/{base}...{head}",
#>     "merges_url": "https://api.github.com/repos/r-dbi/bigrquery/merges",
#>     "archive_url": "https://api.github.com/repos/r-dbi/bigrquery/{archive_format}{/ref}",
#>     "downloads_url": "https://api.github.com/repos/r-dbi/bigrquery/downloads",
#>     "issues_url": "https://api.github.com/repos/r-dbi/bigrquery/issues{/number}",
#>     "pulls_url": "https://api.github.com/repos/r-dbi/bigrquery/pulls{/number}",
#>     "milestones_url": "https://api.github.com/repos/r-dbi/bigrquery/milestones{/number}",
#>     "notifications_url": "https://api.github.com/repos/r-dbi/bigrquery/notifications{?since,all,participating}",
#>     "labels_url": "https://api.github.com/repos/r-dbi/bigrquery/labels{/name}",
#>     "releases_url": "https://api.github.com/repos/r-dbi/bigrquery/releases{/id}",
#>     "deployments_url": "https://api.github.com/repos/r-dbi/bigrquery/deployments",
#>     "created_at": "2013-05-22T14:04:16Z",
#>     "updated_at": "2022-09-03T03:06:14Z",
#>     "pushed_at": "2022-09-01T16:16:28Z",
#>     "git_url": "git://github.com/r-dbi/bigrquery.git",
#>     "ssh_url": "git@github.com:r-dbi/bigrquery.git",
#>     "clone_url": "https://github.com/r-dbi/bigrquery.git",
#>     "svn_url": "https://github.com/r-dbi/bigrquery",
#>     "homepage": "https://bigrquery.r-dbi.org",
#>     "size": 1417,
#>     "stargazers_count": 475,
#>     "watchers_count": 475,
#>     "language": "R",
#>     "has_issues": true,
#>     "has_projects": false,
#>     "has_downloads": true,
#>     "has_wiki": false,
#>     "has_pages": true,
#>     "forks_count": 175,
#>     "mirror_url": {},
#>     "archived": false,
#>     "disabled": false,
#>     "open_issues_count": 74,
#>     "license": {
#>       "key": "gpl-3.0",
#>       "name": "GNU General Public License v3.0",
#>       "spdx_id": "GPL-3.0",
#>       "url": "https://api.github.com/licenses/gpl-3.0",
#>       "node_id": "MDc6TGljZW5zZTk="
#>     },
#>     "allow_forking": true,
#>     "is_template": false,
#>     "web_commit_signoff_required": false,
#>     "topics": [
#>       "bigquery",
#>       "database",
#>       "r"
#>     ],
#>     "visibility": "public",
#>     "forks": 175,
#>     "open_issues": 74,
#>     "watchers": 475,
#>     "default_branch": "main",
#>     "permissions": {
#>       "admin": false,
#>       "maintain": false,
#>       "push": false,
#>       "triage": false,
#>       "pull": false
#>     }
#>   },
#>   {
#>     "id": 171599768,
#>     "node_id": "MDEwOlJlcG9zaXRvcnkxNzE1OTk3Njg=",
#>     "name": "dataAnim",
#>     "full_name": "chrk623/dataAnim",
#>     "private": false,
#>     "owner": {
#>       "login": "chrk623",
#>       "id": 31636428,
#>       "node_id": "MDQ6VXNlcjMxNjM2NDI4",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/31636428?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/chrk623",
#>       "html_url": "https://github.com/chrk623",
#>       "followers_url": "https://api.github.com/users/chrk623/followers",
#>       "following_url": "https://api.github.com/users/chrk623/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/chrk623/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/chrk623/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/chrk623/subscriptions",
#>       "organizations_url": "https://api.github.com/users/chrk623/orgs",
#>       "repos_url": "https://api.github.com/users/chrk623/repos",
#>       "events_url": "https://api.github.com/users/chrk623/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/chrk623/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "html_url": "https://github.com/chrk623/dataAnim",
#>     "description": "R package for visualising data transformation using animations. ",
#>     "fork": false,
#>     "url": "https://api.github.com/repos/chrk623/dataAnim",
#>     "forks_url": "https://api.github.com/repos/chrk623/dataAnim/forks",
#>     "keys_url": "https://api.github.com/repos/chrk623/dataAnim/keys{/key_id}",
#>     "collaborators_url": "https://api.github.com/repos/chrk623/dataAnim/collaborators{/collaborator}",
#>     "teams_url": "https://api.github.com/repos/chrk623/dataAnim/teams",
#>     "hooks_url": "https://api.github.com/repos/chrk623/dataAnim/hooks",
#>     "issue_events_url": "https://api.github.com/repos/chrk623/dataAnim/issues/events{/number}",
#>     "events_url": "https://api.github.com/repos/chrk623/dataAnim/events",
#>     "assignees_url": "https://api.github.com/repos/chrk623/dataAnim/assignees{/user}",
#>     "branches_url": "https://api.github.com/repos/chrk623/dataAnim/branches{/branch}",
#>     "tags_url": "https://api.github.com/repos/chrk623/dataAnim/tags",
#>     "blobs_url": "https://api.github.com/repos/chrk623/dataAnim/git/blobs{/sha}",
#>     "git_tags_url": "https://api.github.com/repos/chrk623/dataAnim/git/tags{/sha}",
#>     "git_refs_url": "https://api.github.com/repos/chrk623/dataAnim/git/refs{/sha}",
#>     "trees_url": "https://api.github.com/repos/chrk623/dataAnim/git/trees{/sha}",
#>     "statuses_url": "https://api.github.com/repos/chrk623/dataAnim/statuses/{sha}",
#>     "languages_url": "https://api.github.com/repos/chrk623/dataAnim/languages",
#>     "stargazers_url": "https://api.github.com/repos/chrk623/dataAnim/stargazers",
#>     "contributors_url": "https://api.github.com/repos/chrk623/dataAnim/contributors",
#>     "subscribers_url": "https://api.github.com/repos/chrk623/dataAnim/subscribers",
#>     "subscription_url": "https://api.github.com/repos/chrk623/dataAnim/subscription",
#>     "commits_url": "https://api.github.com/repos/chrk623/dataAnim/commits{/sha}",
#>     "git_commits_url": "https://api.github.com/repos/chrk623/dataAnim/git/commits{/sha}",
#>     "comments_url": "https://api.github.com/repos/chrk623/dataAnim/comments{/number}",
#>     "issue_comment_url": "https://api.github.com/repos/chrk623/dataAnim/issues/comments{/number}",
#>     "contents_url": "https://api.github.com/repos/chrk623/dataAnim/contents/{+path}",
#>     "compare_url": "https://api.github.com/repos/chrk623/dataAnim/compare/{base}...{head}",
#>     "merges_url": "https://api.github.com/repos/chrk623/dataAnim/merges",
#>     "archive_url": "https://api.github.com/repos/chrk623/dataAnim/{archive_format}{/ref}",
#>     "downloads_url": "https://api.github.com/repos/chrk623/dataAnim/downloads",
#>     "issues_url": "https://api.github.com/repos/chrk623/dataAnim/issues{/number}",
#>     "pulls_url": "https://api.github.com/repos/chrk623/dataAnim/pulls{/number}",
#>     "milestones_url": "https://api.github.com/repos/chrk623/dataAnim/milestones{/number}",
#>     "notifications_url": "https://api.github.com/repos/chrk623/dataAnim/notifications{?since,all,participating}",
#>     "labels_url": "https://api.github.com/repos/chrk623/dataAnim/labels{/name}",
#>     "releases_url": "https://api.github.com/repos/chrk623/dataAnim/releases{/id}",
#>     "deployments_url": "https://api.github.com/repos/chrk623/dataAnim/deployments",
#>     "created_at": "2019-02-20T04:17:53Z",
#>     "updated_at": "2022-09-03T14:16:05Z",
#>     "pushed_at": "2019-07-10T11:07:07Z",
#>     "git_url": "git://github.com/chrk623/dataAnim.git",
#>     "ssh_url": "git@github.com:chrk623/dataAnim.git",
#>     "clone_url": "https://github.com/chrk623/dataAnim.git",
#>     "svn_url": "https://github.com/chrk623/dataAnim",
#>     "homepage": {},
#>     "size": 12265,
#>     "stargazers_count": 105,
#>     "watchers_count": 105,
#>     "language": "JavaScript",
#>     "has_issues": true,
#>     "has_projects": true,
#>     "has_downloads": true,
#>     "has_wiki": true,
#>     "has_pages": false,
#>     "forks_count": 7,
#>     "mirror_url": {},
#>     "archived": false,
#>     "disabled": false,
#>     "open_issues_count": 0,
#>     "license": {
#>       "key": "gpl-3.0",
#>       "name": "GNU General Public License v3.0",
#>       "spdx_id": "GPL-3.0",
#>       "url": "https://api.github.com/licenses/gpl-3.0",
#>       "node_id": "MDc6TGljZW5zZTk="
#>     },
#>     "allow_forking": true,
#>     "is_template": false,
#>     "web_commit_signoff_required": false,
#>     "topics": [],
#>     "visibility": "public",
#>     "forks": 7,
#>     "open_issues": 0,
#>     "watchers": 105,
#>     "default_branch": "master",
#>     "permissions": {
#>       "admin": false,
#>       "maintain": false,
#>       "push": false,
#>       "triage": false,
#>       "pull": false
#>     }
#>   }
#> ] 
gh("/users/{username}/starred", username = "hadley", .limit = 2)
#> [
#>   {
#>     "id": 10221246,
#>     "node_id": "MDEwOlJlcG9zaXRvcnkxMDIyMTI0Ng==",
#>     "name": "bigrquery",
#>     "full_name": "r-dbi/bigrquery",
#>     "private": false,
#>     "owner": {
#>       "login": "r-dbi",
#>       "id": 5695665,
#>       "node_id": "MDEyOk9yZ2FuaXphdGlvbjU2OTU2NjU=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/5695665?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/r-dbi",
#>       "html_url": "https://github.com/r-dbi",
#>       "followers_url": "https://api.github.com/users/r-dbi/followers",
#>       "following_url": "https://api.github.com/users/r-dbi/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/r-dbi/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/r-dbi/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/r-dbi/subscriptions",
#>       "organizations_url": "https://api.github.com/users/r-dbi/orgs",
#>       "repos_url": "https://api.github.com/users/r-dbi/repos",
#>       "events_url": "https://api.github.com/users/r-dbi/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/r-dbi/received_events",
#>       "type": "Organization",
#>       "site_admin": false
#>     },
#>     "html_url": "https://github.com/r-dbi/bigrquery",
#>     "description": "An interface to Google's BigQuery from R.",
#>     "fork": false,
#>     "url": "https://api.github.com/repos/r-dbi/bigrquery",
#>     "forks_url": "https://api.github.com/repos/r-dbi/bigrquery/forks",
#>     "keys_url": "https://api.github.com/repos/r-dbi/bigrquery/keys{/key_id}",
#>     "collaborators_url": "https://api.github.com/repos/r-dbi/bigrquery/collaborators{/collaborator}",
#>     "teams_url": "https://api.github.com/repos/r-dbi/bigrquery/teams",
#>     "hooks_url": "https://api.github.com/repos/r-dbi/bigrquery/hooks",
#>     "issue_events_url": "https://api.github.com/repos/r-dbi/bigrquery/issues/events{/number}",
#>     "events_url": "https://api.github.com/repos/r-dbi/bigrquery/events",
#>     "assignees_url": "https://api.github.com/repos/r-dbi/bigrquery/assignees{/user}",
#>     "branches_url": "https://api.github.com/repos/r-dbi/bigrquery/branches{/branch}",
#>     "tags_url": "https://api.github.com/repos/r-dbi/bigrquery/tags",
#>     "blobs_url": "https://api.github.com/repos/r-dbi/bigrquery/git/blobs{/sha}",
#>     "git_tags_url": "https://api.github.com/repos/r-dbi/bigrquery/git/tags{/sha}",
#>     "git_refs_url": "https://api.github.com/repos/r-dbi/bigrquery/git/refs{/sha}",
#>     "trees_url": "https://api.github.com/repos/r-dbi/bigrquery/git/trees{/sha}",
#>     "statuses_url": "https://api.github.com/repos/r-dbi/bigrquery/statuses/{sha}",
#>     "languages_url": "https://api.github.com/repos/r-dbi/bigrquery/languages",
#>     "stargazers_url": "https://api.github.com/repos/r-dbi/bigrquery/stargazers",
#>     "contributors_url": "https://api.github.com/repos/r-dbi/bigrquery/contributors",
#>     "subscribers_url": "https://api.github.com/repos/r-dbi/bigrquery/subscribers",
#>     "subscription_url": "https://api.github.com/repos/r-dbi/bigrquery/subscription",
#>     "commits_url": "https://api.github.com/repos/r-dbi/bigrquery/commits{/sha}",
#>     "git_commits_url": "https://api.github.com/repos/r-dbi/bigrquery/git/commits{/sha}",
#>     "comments_url": "https://api.github.com/repos/r-dbi/bigrquery/comments{/number}",
#>     "issue_comment_url": "https://api.github.com/repos/r-dbi/bigrquery/issues/comments{/number}",
#>     "contents_url": "https://api.github.com/repos/r-dbi/bigrquery/contents/{+path}",
#>     "compare_url": "https://api.github.com/repos/r-dbi/bigrquery/compare/{base}...{head}",
#>     "merges_url": "https://api.github.com/repos/r-dbi/bigrquery/merges",
#>     "archive_url": "https://api.github.com/repos/r-dbi/bigrquery/{archive_format}{/ref}",
#>     "downloads_url": "https://api.github.com/repos/r-dbi/bigrquery/downloads",
#>     "issues_url": "https://api.github.com/repos/r-dbi/bigrquery/issues{/number}",
#>     "pulls_url": "https://api.github.com/repos/r-dbi/bigrquery/pulls{/number}",
#>     "milestones_url": "https://api.github.com/repos/r-dbi/bigrquery/milestones{/number}",
#>     "notifications_url": "https://api.github.com/repos/r-dbi/bigrquery/notifications{?since,all,participating}",
#>     "labels_url": "https://api.github.com/repos/r-dbi/bigrquery/labels{/name}",
#>     "releases_url": "https://api.github.com/repos/r-dbi/bigrquery/releases{/id}",
#>     "deployments_url": "https://api.github.com/repos/r-dbi/bigrquery/deployments",
#>     "created_at": "2013-05-22T14:04:16Z",
#>     "updated_at": "2022-09-03T03:06:14Z",
#>     "pushed_at": "2022-09-01T16:16:28Z",
#>     "git_url": "git://github.com/r-dbi/bigrquery.git",
#>     "ssh_url": "git@github.com:r-dbi/bigrquery.git",
#>     "clone_url": "https://github.com/r-dbi/bigrquery.git",
#>     "svn_url": "https://github.com/r-dbi/bigrquery",
#>     "homepage": "https://bigrquery.r-dbi.org",
#>     "size": 1417,
#>     "stargazers_count": 475,
#>     "watchers_count": 475,
#>     "language": "R",
#>     "has_issues": true,
#>     "has_projects": false,
#>     "has_downloads": true,
#>     "has_wiki": false,
#>     "has_pages": true,
#>     "forks_count": 175,
#>     "mirror_url": {},
#>     "archived": false,
#>     "disabled": false,
#>     "open_issues_count": 74,
#>     "license": {
#>       "key": "gpl-3.0",
#>       "name": "GNU General Public License v3.0",
#>       "spdx_id": "GPL-3.0",
#>       "url": "https://api.github.com/licenses/gpl-3.0",
#>       "node_id": "MDc6TGljZW5zZTk="
#>     },
#>     "allow_forking": true,
#>     "is_template": false,
#>     "web_commit_signoff_required": false,
#>     "topics": [
#>       "bigquery",
#>       "database",
#>       "r"
#>     ],
#>     "visibility": "public",
#>     "forks": 175,
#>     "open_issues": 74,
#>     "watchers": 475,
#>     "default_branch": "main",
#>     "permissions": {
#>       "admin": false,
#>       "maintain": false,
#>       "push": false,
#>       "triage": false,
#>       "pull": false
#>     }
#>   },
#>   {
#>     "id": 171599768,
#>     "node_id": "MDEwOlJlcG9zaXRvcnkxNzE1OTk3Njg=",
#>     "name": "dataAnim",
#>     "full_name": "chrk623/dataAnim",
#>     "private": false,
#>     "owner": {
#>       "login": "chrk623",
#>       "id": 31636428,
#>       "node_id": "MDQ6VXNlcjMxNjM2NDI4",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/31636428?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/chrk623",
#>       "html_url": "https://github.com/chrk623",
#>       "followers_url": "https://api.github.com/users/chrk623/followers",
#>       "following_url": "https://api.github.com/users/chrk623/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/chrk623/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/chrk623/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/chrk623/subscriptions",
#>       "organizations_url": "https://api.github.com/users/chrk623/orgs",
#>       "repos_url": "https://api.github.com/users/chrk623/repos",
#>       "events_url": "https://api.github.com/users/chrk623/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/chrk623/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "html_url": "https://github.com/chrk623/dataAnim",
#>     "description": "R package for visualising data transformation using animations. ",
#>     "fork": false,
#>     "url": "https://api.github.com/repos/chrk623/dataAnim",
#>     "forks_url": "https://api.github.com/repos/chrk623/dataAnim/forks",
#>     "keys_url": "https://api.github.com/repos/chrk623/dataAnim/keys{/key_id}",
#>     "collaborators_url": "https://api.github.com/repos/chrk623/dataAnim/collaborators{/collaborator}",
#>     "teams_url": "https://api.github.com/repos/chrk623/dataAnim/teams",
#>     "hooks_url": "https://api.github.com/repos/chrk623/dataAnim/hooks",
#>     "issue_events_url": "https://api.github.com/repos/chrk623/dataAnim/issues/events{/number}",
#>     "events_url": "https://api.github.com/repos/chrk623/dataAnim/events",
#>     "assignees_url": "https://api.github.com/repos/chrk623/dataAnim/assignees{/user}",
#>     "branches_url": "https://api.github.com/repos/chrk623/dataAnim/branches{/branch}",
#>     "tags_url": "https://api.github.com/repos/chrk623/dataAnim/tags",
#>     "blobs_url": "https://api.github.com/repos/chrk623/dataAnim/git/blobs{/sha}",
#>     "git_tags_url": "https://api.github.com/repos/chrk623/dataAnim/git/tags{/sha}",
#>     "git_refs_url": "https://api.github.com/repos/chrk623/dataAnim/git/refs{/sha}",
#>     "trees_url": "https://api.github.com/repos/chrk623/dataAnim/git/trees{/sha}",
#>     "statuses_url": "https://api.github.com/repos/chrk623/dataAnim/statuses/{sha}",
#>     "languages_url": "https://api.github.com/repos/chrk623/dataAnim/languages",
#>     "stargazers_url": "https://api.github.com/repos/chrk623/dataAnim/stargazers",
#>     "contributors_url": "https://api.github.com/repos/chrk623/dataAnim/contributors",
#>     "subscribers_url": "https://api.github.com/repos/chrk623/dataAnim/subscribers",
#>     "subscription_url": "https://api.github.com/repos/chrk623/dataAnim/subscription",
#>     "commits_url": "https://api.github.com/repos/chrk623/dataAnim/commits{/sha}",
#>     "git_commits_url": "https://api.github.com/repos/chrk623/dataAnim/git/commits{/sha}",
#>     "comments_url": "https://api.github.com/repos/chrk623/dataAnim/comments{/number}",
#>     "issue_comment_url": "https://api.github.com/repos/chrk623/dataAnim/issues/comments{/number}",
#>     "contents_url": "https://api.github.com/repos/chrk623/dataAnim/contents/{+path}",
#>     "compare_url": "https://api.github.com/repos/chrk623/dataAnim/compare/{base}...{head}",
#>     "merges_url": "https://api.github.com/repos/chrk623/dataAnim/merges",
#>     "archive_url": "https://api.github.com/repos/chrk623/dataAnim/{archive_format}{/ref}",
#>     "downloads_url": "https://api.github.com/repos/chrk623/dataAnim/downloads",
#>     "issues_url": "https://api.github.com/repos/chrk623/dataAnim/issues{/number}",
#>     "pulls_url": "https://api.github.com/repos/chrk623/dataAnim/pulls{/number}",
#>     "milestones_url": "https://api.github.com/repos/chrk623/dataAnim/milestones{/number}",
#>     "notifications_url": "https://api.github.com/repos/chrk623/dataAnim/notifications{?since,all,participating}",
#>     "labels_url": "https://api.github.com/repos/chrk623/dataAnim/labels{/name}",
#>     "releases_url": "https://api.github.com/repos/chrk623/dataAnim/releases{/id}",
#>     "deployments_url": "https://api.github.com/repos/chrk623/dataAnim/deployments",
#>     "created_at": "2019-02-20T04:17:53Z",
#>     "updated_at": "2022-09-03T14:16:05Z",
#>     "pushed_at": "2019-07-10T11:07:07Z",
#>     "git_url": "git://github.com/chrk623/dataAnim.git",
#>     "ssh_url": "git@github.com:chrk623/dataAnim.git",
#>     "clone_url": "https://github.com/chrk623/dataAnim.git",
#>     "svn_url": "https://github.com/chrk623/dataAnim",
#>     "homepage": {},
#>     "size": 12265,
#>     "stargazers_count": 105,
#>     "watchers_count": 105,
#>     "language": "JavaScript",
#>     "has_issues": true,
#>     "has_projects": true,
#>     "has_downloads": true,
#>     "has_wiki": true,
#>     "has_pages": false,
#>     "forks_count": 7,
#>     "mirror_url": {},
#>     "archived": false,
#>     "disabled": false,
#>     "open_issues_count": 0,
#>     "license": {
#>       "key": "gpl-3.0",
#>       "name": "GNU General Public License v3.0",
#>       "spdx_id": "GPL-3.0",
#>       "url": "https://api.github.com/licenses/gpl-3.0",
#>       "node_id": "MDc6TGljZW5zZTk="
#>     },
#>     "allow_forking": true,
#>     "is_template": false,
#>     "web_commit_signoff_required": false,
#>     "topics": [],
#>     "visibility": "public",
#>     "forks": 7,
#>     "open_issues": 0,
#>     "watchers": 105,
#>     "default_branch": "master",
#>     "permissions": {
#>       "admin": false,
#>       "maintain": false,
#>       "push": false,
#>       "triage": false,
#>       "pull": false
#>     }
#>   }
#> ] 
if (FALSE) {
## Create a repository, needs a token in GITHUB_PAT (or GITHUB_TOKEN)
## environment variable
gh("POST /user/repos", name = "foobar")
}
## Issues of a repository
gh("/repos/hadley/dplyr/issues")
#> [
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6451",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6451/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6451/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6451/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6451",
#>     "id": 1365114960,
#>     "node_id": "PR_kwDOAGIUpc4-iPHg",
#>     "number": 6451,
#>     "title": "Switch to radix ordering in more places",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2022-09-07T19:51:32Z",
#>     "updated_at": "2022-09-08T11:48:26Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": false,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6451",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6451",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6451.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6451.patch",
#>       "merged_at": {}
#>     },
#>     "body": "- `nth(order_by =)`\r\n- `with_order()`\r\n\r\nThis means that `vec_order_base()` is now only used in the `dplyr.legacy_locale` code path of `group_by()`. And I might be able to remove that in another PR by using `dplyr_order_legacy()`, which is used in the `arrange()` legacy path. I'll take a look.\r\n\r\nI did not feel like this needs a news bullet, because it is highly unlikely to affect much code, and we don't provide a way to opt out of this.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6451/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/6451/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6446",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6446/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6446/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6446/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6446",
#>     "id": 1358939438,
#>     "node_id": "I_kwDOAGIUpc5Q_8Uu",
#>     "number": 6446,
#>     "title": "Should joins have `.before` and `.after` arguments?",
#>     "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",
#>       "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": 1257707950,
#>         "node_id": "MDU6TGFiZWwxMjU3NzA3OTUw",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/tables%20%F0%9F%A7%AE",
#>         "name": "tables 🧮",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "joins and set operations"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2022-09-01T14:26:28Z",
#>     "updated_at": "2022-09-01T21:42:12Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "To match `mutate()`",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6446/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/6446/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6445",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6445/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6445/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6445/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6445",
#>     "id": 1358891293,
#>     "node_id": "I_kwDOAGIUpc5Q_wkd",
#>     "number": 6445,
#>     "title": "Better warning for *-to-many join?",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 6,
#>     "created_at": "2022-09-01T13:55:10Z",
#>     "updated_at": "2022-09-07T13:17:11Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "Currently:\r\n\r\n```R\r\nWarning message:\r\nEach row in `x` should match at most 1 row in `y`.\r\nℹ Row 1 of `x` matches multiple rows.\r\nℹ If multiple matches are expected, specify `multiple = \"all\"` in the join call to silence this warning. \r\n```\r\n\r\nMaybe it should be more like:\r\n\r\n```R\r\nWarning message:\r\nOutput is longer than input, because some rows in `x` match multiple rows in `y`.\r\nℹ Row 1 of `x` matches multiple rows.\r\nℹ If multiple matches are expected, specify `multiple = \"all\"` in the join call to silence this warning. \r\n```\r\n\r\n",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6445/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/6445/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6444",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6444/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6444/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6444/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6444",
#>     "id": 1358737695,
#>     "node_id": "PR_kwDOAGIUpc4-NJfW",
#>     "number": 6444,
#>     "title": "Drop `caller_env` from `DataMask`",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 2,
#>     "created_at": "2022-09-01T12:04:05Z",
#>     "updated_at": "2022-09-06T20:30:23Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": true,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6444",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6444",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6444.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6444.patch",
#>       "merged_at": {}
#>     },
#>     "body": "@romainfrancois @lionel- Does this look ok? As far as I can tell the only place this was used was when evaluating the glue spec for `across()`, and I'm pretty sure using the environment of the `across()` quosure is just as good (if not better).\r\n\r\n(This is in preparation for #6442)\r\n\r\nI still need to remove the other various argument that this makes redundant, but I wanted to double check that I wasn't missing anything obvious before I started on that.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6444/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/6444/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6443",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6443/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6443/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6443/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6443",
#>     "id": 1358608777,
#>     "node_id": "PR_kwDOAGIUpc4-Mtki",
#>     "number": 6443,
#>     "title": "Collect warnings and add `dplyr_last_warnings()`",
#>     "user": {
#>       "login": "lionel-",
#>       "id": 4465050,
#>       "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/lionel-",
#>       "html_url": "https://github.com/lionel-",
#>       "followers_url": "https://api.github.com/users/lionel-/followers",
#>       "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>       "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>       "repos_url": "https://api.github.com/users/lionel-/repos",
#>       "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 7,
#>     "created_at": "2022-09-01T10:23:00Z",
#>     "updated_at": "2022-09-08T09:35:40Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": false,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6443",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6443",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6443.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6443.patch",
#>       "merged_at": {}
#>     },
#>     "body": "Branched from #6438.\r\n\r\nFixes #6005\r\nFixes #6236\r\n\r\n* Warnings within mutate steps are now collected instead of being enriched right away.\r\n* The new function `dplyr_last_warnings()` returns enriched warnings, the first 20 by default.\r\n* Enriched warnings are now chained so as to keep a reference to the verb within which they were emitted.\r\n\r\n```r\r\nf <- function(x) {\r\n  warning(\"foo\")\r\n  x\r\n}\r\n\r\ndf <- tibble(id = 1:100)\r\n\r\ndf |>\r\n  rowwise() |>\r\n  mutate(x = f(1))\r\n#> # A tibble: 100 × 2\r\n#> # Rowwise:\r\n#>      id     x\r\n#>   <int> <dbl>\r\n#> 1     1     1\r\n#> 2     2     1\r\n#> 3     3     1\r\n#> 4     4     1\r\n#> # … with 96 more rows\r\n#> # ℹ Use `print(n = ...)` to see more rows\r\n#> Warning message:\r\n#> There were 100 warnings in `mutate()`.\r\n#> ℹ Run `dplyr::dplyr_last_warnings()` to see them.\r\n\r\ndplyr_last_warnings(3)\r\n#> [[1]]\r\n#> <warning/rlang_warning>\r\n#> Warning in `mutate()`:\r\n#> Problem in row 1 while computing `x = f(1)`.\r\n#> Caused by warning in `f()`:\r\n#> ! foo\r\n#>\r\n#> [[2]]\r\n#> <warning/rlang_warning>\r\n#> Warning in `mutate()`:\r\n#> Problem in row 2 while computing `x = f(1)`.\r\n#> Caused by warning in `f()`:\r\n#> ! foo\r\n#>\r\n#> [[3]]\r\n#> <warning/rlang_warning>\r\n#> Warning in `mutate()`:\r\n#> Problem in row 3 while computing `x = f(1)`.\r\n#> Caused by warning in `f()`:\r\n#> ! foo\r\n#>\r\n#> ... with 97 more warnings.\r\n#> ℹ Use `dplyr_last_warnings(n = ...)` to show more.\r\n```\r\n\r\nThe other way we could handle long lists of warnings is by detecting if there are more than 10 or 20. If that's the case, suggest to run `head(dplyr_last_warnings())`, otherwise just `dplyr_last_warnings()`. On hindsight I think that would make things simpler internally and for users.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6443/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/6443/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6442",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6442/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6442/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6442/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6442",
#>     "id": 1358110988,
#>     "node_id": "I_kwDOAGIUpc5Q8yEM",
#>     "number": 6442,
#>     "title": "`group_by_prepare` with default `error_call` argument results in error",
#>     "user": {
#>       "login": "eutwt",
#>       "id": 11261404,
#>       "node_id": "MDQ6VXNlcjExMjYxNDA0",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/11261404?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/eutwt",
#>       "html_url": "https://github.com/eutwt",
#>       "followers_url": "https://api.github.com/users/eutwt/followers",
#>       "following_url": "https://api.github.com/users/eutwt/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/eutwt/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/eutwt/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/eutwt/subscriptions",
#>       "organizations_url": "https://api.github.com/users/eutwt/orgs",
#>       "repos_url": "https://api.github.com/users/eutwt/repos",
#>       "events_url": "https://api.github.com/users/eutwt/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/eutwt/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2022-09-01T01:12:35Z",
#>     "updated_at": "2022-09-01T02:07:34Z",
#>     "closed_at": {},
#>     "author_association": "CONTRIBUTOR",
#>     "active_lock_reason": {},
#>     "body": "The default values for arguments `caller_env` and `error_call` in `group_by_prepare` don't seem to work\r\n\r\n`group_by_prepare` with default `error_call`\r\n``` r\r\ndf <- data.frame(x = 1)\r\ndplyr::group_by_prepare(df)\r\n#> Error in is_missing(call): promise already under evaluation: recursive default argument reference or earlier problems?\r\n```\r\n<sup>Created on 2022-08-31 with [reprex v2.0.2](https://reprex.tidyverse.org)<\/sup>\r\n\r\nwith `error_call` supplied but not `caller_env`, adding a column\r\n``` r\r\ndf <- data.frame(x = 1)\r\ndplyr::group_by_prepare(df, y = 3, error_call = call('fun'))\r\n#> Error in initialize(...): promise already under evaluation: recursive default argument reference or earlier problems?\r\n```\r\n<sup>Created on 2022-08-31 with [reprex v2.0.2](https://reprex.tidyverse.org)<\/sup>\r\n\r\nThe reason I noticed this is that `group_by_prepare(data.frame(x = 1))` works with CRAN dplyr but not dev dplyr, which causes `group_by` to fail in dtplyr if dev dplyr is installed.\r\n\r\nIt seems to be because `caller_env` is self-referencing in the function signature. I guess the users of this function would be package developers who can probably figure out what's going on and just supply the arguments, but it was a little confusing. Maybe these arguments could have no default to make the error more understandable (`argument \"caller_env\" is missing` rather than `promise already under evaluation`), or `caller_env` renamed to `.caller_env`.\r\n\r\nhttps://github.com/tidyverse/dplyr/blob/48431a541c16ad7f88bf2e2918013ae1dc82f480/R/group-by.r#L193-L199\r\n\r\n``` r\r\nfun <- function(caller_env = caller_env(2)) {\r\n  print(caller_env)\r\n}\r\nfun()\r\n#> Error in print(caller_env): promise already under evaluation: recursive default argument reference or earlier problems?\r\n```\r\n<sup>Created on 2022-08-31 with [reprex v2.0.2](https://reprex.tidyverse.org)<\/sup>",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6442/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/6442/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6439",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6439/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6439/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6439/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6439",
#>     "id": 1357526283,
#>     "node_id": "I_kwDOAGIUpc5Q6jUL",
#>     "number": 6439,
#>     "title": "Replace `preceding()` and `following()` with `closest()`",
#>     "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",
#>       "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": 1257707950,
#>         "node_id": "MDU6TGFiZWwxMjU3NzA3OTUw",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/tables%20%F0%9F%A7%AE",
#>         "name": "tables 🧮",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "joins and set operations"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {
#>       "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",
#>       "site_admin": false
#>     },
#>     "assignees": [
#>       {
#>         "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",
#>         "site_admin": false
#>       }
#>     ],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 0,
#>     "created_at": "2022-08-31T15:42:16Z",
#>     "updated_at": "2022-08-31T15:42:16Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "```r\r\npreceding(x, y, inclusive = TRUE)  -> closest(x >= y)\r\npreceding(x, y, inclusive = FALSE) -> closest(x > y)\r\nfollowing(x, y, inclusive = TRUE)  -> closest(x <= y)\r\nfollowing(x, y, inclusive = FALSE) -> closest(x < y)\r\n```\r\n\r\nThis should be more intuitive for interactive exploration too, because you probably start out with `x >= y`, then realize you only care about the closest match, so you just wrap it in `closest()` rather than having to switch to `preceding()`\r\n",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6439/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/6439/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6435",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6435/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6435/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6435/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6435",
#>     "id": 1355019193,
#>     "node_id": "I_kwDOAGIUpc5Qw_O5",
#>     "number": 6435,
#>     "title": "Add `merge` indicator after a join",
#>     "user": {
#>       "login": "nmarantz",
#>       "id": 25621920,
#>       "node_id": "MDQ6VXNlcjI1NjIxOTIw",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/25621920?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/nmarantz",
#>       "html_url": "https://github.com/nmarantz",
#>       "followers_url": "https://api.github.com/users/nmarantz/followers",
#>       "following_url": "https://api.github.com/users/nmarantz/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/nmarantz/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/nmarantz/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/nmarantz/subscriptions",
#>       "organizations_url": "https://api.github.com/users/nmarantz/orgs",
#>       "repos_url": "https://api.github.com/users/nmarantz/repos",
#>       "events_url": "https://api.github.com/users/nmarantz/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/nmarantz/received_events",
#>       "type": "User",
#>       "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": 1257707950,
#>         "node_id": "MDU6TGFiZWwxMjU3NzA3OTUw",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/tables%20%F0%9F%A7%AE",
#>         "name": "tables 🧮",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "joins and set operations"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 2,
#>     "created_at": "2022-08-30T00:37:58Z",
#>     "updated_at": "2022-08-30T19:38:07Z",
#>     "closed_at": {},
#>     "author_association": "NONE",
#>     "active_lock_reason": {},
#>     "body": "A prior iteration of this request was [closed and locked as old](https://github.com/tidyverse/dplyr/issues/2183), but the asserted rationale does not address the request. It would be very useful if the `dplyr` mutating join functions allowed for an option to create a variable indicating which observations were joined (or not) from each data frame. This is a feature available in Stata's `merge` command and in Pandas (`indicator = True`). It has been implemented in R through the `statar` package, but it would be great to have it included in the `dplyr` mutating join functions. \r\n\r\nThe purported rationale for closing the earlier iteration of this feature request was that `tidylog` has solved the problem. The `tidylog` package is great, but it doesn't add any variables to the merged data frame, which was the initial feature request. \r\n",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6435/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/6435/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6420",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6420/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6420/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6420/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6420",
#>     "id": 1343789904,
#>     "node_id": "PR_kwDOAGIUpc49bbQ_",
#>     "number": 6420,
#>     "title": "WIP: New .multi argument to summarize()",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2022-08-19T00:44:44Z",
#>     "updated_at": "2022-08-19T00:50:01Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": false,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6420",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6420",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6420.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6420.patch",
#>       "merged_at": {}
#>     },
#>     "body": "``` r\r\nlibrary(conflicted)\r\nlibrary(dplyr)\r\n\r\nmy_custom_summary_function <- function(n) {\r\n  # Should return a scalar, but I accidentally return a vector\r\n  rep(n, n)\r\n}\r\n\r\ntibble(n = 2:0) %>%\r\n  group_by(n) %>%\r\n  summarize(out = my_custom_summary_function(n), .groups = \"drop\", .multi = \"fail\")\r\n#> Error in `summarize()`:\r\n#> ! A summary function returned a vector of size != 1, use `.multi =\r\n#>   \"require\"` or `.multi = \"allow\"`.\r\n\r\ntibble(n = 2:0) %>%\r\n  group_by(n) %>%\r\n  summarize(out = my_custom_summary_function(n), .groups = \"drop\", .multi = \"require\")\r\n#> # A tibble: 3 × 2\r\n#>       n   out\r\n#>   <int> <int>\r\n#> 1     1     1\r\n#> 2     2     2\r\n#> 3     2     2\r\n\r\ntibble(n = 2:0) %>%\r\n  group_by(n) %>%\r\n  summarize(out = n, .groups = \"drop\", .multi = \"require\")\r\n#> Error in `summarize()`:\r\n#> ! All summary functions returned a vector of size one, use `.multi =\r\n#>   \"fail\"` or `.multi = \"allow\"`.\r\n```\r\n\r\n<sup>Created on 2022-08-19 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1)<\/sup>\r\n\r\nHappy to discuss argument name and values. The error message can be made much prettier, I'll also add tests.\r\n\r\nThere seems to be no mention of multi-row `summarize()` in the vignettes.\r\n\r\nCloses #6382.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6420/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/6420/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6404",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6404/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6404/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6404/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6404",
#>     "id": 1340834061,
#>     "node_id": "PR_kwDOAGIUpc49Rpkx",
#>     "number": 6404,
#>     "title": "Simpler approach to slice helpers",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2022-08-16T20:19:17Z",
#>     "updated_at": "2022-08-16T20:44:51Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": true,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6404",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6404",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6404.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6404.patch",
#>       "merged_at": {}
#>     },
#>     "body": {},
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6404/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/6404/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6388",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6388/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6388/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6388/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6388",
#>     "id": 1328915128,
#>     "node_id": "I_kwDOAGIUpc5PNaK4",
#>     "number": 6388,
#>     "title": "File/test tidyup",
#>     "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",
#>       "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"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 0,
#>     "created_at": "2022-08-04T16:43:36Z",
#>     "updated_at": "2022-08-04T22:10:34Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "Need to do after PRs mostly closed\r\n\r\n* Ensure all use `.R`\r\n* Ensure `tests/` and `R/` align",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6388/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/6388/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6386",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6386/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6386/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6386/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6386",
#>     "id": 1328649265,
#>     "node_id": "PR_kwDOAGIUpc48prUf",
#>     "number": 6386,
#>     "title": "Use vctrs validation in `slice()`",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2022-08-04T13:35:37Z",
#>     "updated_at": "2022-08-30T14:32:46Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": true,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6386",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6386",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6386.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6386.patch",
#>       "merged_at": {}
#>     },
#>     "body": "WIP for #5242",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6386/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/6386/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6382",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6382/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6382/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6382/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6382",
#>     "id": 1323888997,
#>     "node_id": "I_kwDOAGIUpc5O6PFl",
#>     "number": 6382,
#>     "title": "summarize() with multi-row returns",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 2,
#>     "created_at": "2022-08-01T06:20:29Z",
#>     "updated_at": "2022-08-26T17:31:07Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "As of dplyr 1.0.0, `summarize()` will create multiple rows per group, according to the length of the return value of the summary function. This new feature leads to unintended behavior if the vector return is accidental, and also can lead to data loss.\r\n\r\n``` r\r\nlibrary(conflicted)\r\nlibrary(dplyr)\r\n\r\nmy_custom_summary_function <- function(n) {\r\n  # Should return a scalar, but I accidentally return a vector\r\n  rep(n, n)\r\n}\r\n\r\ntibble(n = 2:0) %>% \r\n  group_by(n) %>% \r\n  summarize(out = my_custom_summary_function(n), .groups = \"drop\") %>% \r\n  ungroup()\r\n#> # A tibble: 3 × 2\r\n#>       n   out\r\n#>   <int> <int>\r\n#> 1     1     1\r\n#> 2     2     2\r\n#> 3     2     2\r\n```\r\n\r\n<sup>Created on 2022-08-01 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1)<\/sup>\r\n\r\nShould we introduce a `.multi = c(\"allow\", \"require\", \"fail\")` argument that supports the pre-1.0.0 strict mode of operation? Should `.multi = \"fail\"` even be the default?\r\n\r\n``` r\r\nlibrary(conflicted)\r\nlibrary(dplyr)\r\n\r\nmy_custom_summary_function <- function(n) {\r\n  # Should return a scalar, but I accidentally return a vector\r\n  rep(n, n)\r\n}\r\n\r\ntibble(n = 2:0) %>% \r\n  group_by(n) %>% \r\n  summarize(out = my_custom_summary_function(n), .groups = \"drop\", .multi = \"fail\") %>% \r\n  ungroup()\r\n## Error: `out` has length != 1 in groups 1, 3, use `.multi = \"allow\"` if this is intended\r\n```\r\n\r\n<sup>Imagined on 2022-08-01 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1)<\/sup>\r\n\r\n",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6382/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/6382/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": "reopened"
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6367",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6367/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6367/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6367/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6367",
#>     "id": 1318196661,
#>     "node_id": "PR_kwDOAGIUpc48HD_y",
#>     "number": 6367,
#>     "title": "Next round of database defunctions",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 3,
#>     "created_at": "2022-07-26T12:49:21Z",
#>     "updated_at": "2022-08-03T20:12:19Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": false,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6367",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6367",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6367.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6367.patch",
#>       "merged_at": {}
#>     },
#>     "body": "#4663",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6367/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/6367/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6313",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6313/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6313/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6313/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6313",
#>     "id": 1287609585,
#>     "node_id": "PR_kwDOAGIUpc46gqlO",
#>     "number": 6313,
#>     "title": "Implement `mutate(.when =)`",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 13,
#>     "created_at": "2022-06-28T16:33:28Z",
#>     "updated_at": "2022-07-15T19:32:09Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": true,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6313",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6313",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6313.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6313.patch",
#>       "merged_at": {}
#>     },
#>     "body": "Closes #4050 \r\nCloses #6304 \r\n\r\nThis is a fully tested implementation of `mutate(.when =)`. \r\n\r\n## Implementation details\r\n\r\nA few notes on how it works:\r\n\r\n- `.when` must evaluate to a logical vector the same size as `.data`. It isn't recycled.\r\n\r\n- Groups are ignored when computing `.when`. This might be a little controversial, but I think it makes the most sense:\r\n  - It matches how SQL's WHERE statement works when combined with GROUP BY. The WHERE is applied first and then the groups are computed on the remaining rows. This will be clearer if we have `mutate(df, .when =, .by =)`.\r\n  - You generally don't want `.when` to be evaluated per group (it rarely needs a per-group mean or something like that), but sometimes you want your expressions in `...` to still be evaluated per group after applying a global `.when`. You save _a lot_ of performance in this case by evaluating `.when` on the ungrouped data.\r\n  - If you really need per-group `.when`, you should just use `if_else()` instead, since expressions in the `...` are evaluated per group.\r\n\r\n- It is hooked into the data mask to be performant. Only columns that are referenced in `...` are sliced to the locations referred to by `.when`.\r\n\r\n- `.when` is mainly useful for _updating_ existing columns. Because of this, you can't modify the type of the columns you are updating. i.e. if `x` is an integer column then you can't do `mutate(df, x = x + 1.5, .when = y > 2)`.\r\n  - This type stability is an _extremely_ nice property. It makes it more valuable than `if_else()` for updates, because that takes the common type, i.e. `x = if_else(y > 2, x + 1.5, x)` would not be type stable on `x`.\r\n\r\n## Outstanding questions\r\n\r\n- Should `.when` allow `if_any()` and `if_all()`? It seems like they might be useful. Right now it requires `.when` to evaluate to a single logical vector. I don't think it should allow `across()` though.\r\n\r\n- Are we ok with this single condition interface? I am. We had a lot of discussion about alternative interfaces that might allow case-when style updates like `mutate(when(x < 2, x = NA, y = 3), when(x < 5, x = 99))`, but I think:\r\n  - That is overly complicated for the 99% case that this is likely to be used for (1 condition, >=1 columns to update)\r\n  - It introduces a clunky `when()` helper that wouldn't be used anywhere else\r\n  - It opens up a lot of hard to answer questions like: Can you mix `when()` and normal expressions in the same `mutate()` call? Do you have to recompute groups before each `when()`?\r\n  - Keeping it to 1 condition should allow us to nicely translate this to a SQL `UPDATE` statement for dbplyr, I think.\r\n\r\n## Outstanding actions\r\n\r\n- [ ] Export `vec_locate_runs()` from vctrs if we end up using it here in the final version of this PR\r\n\r\n## Examples\r\n\r\n``` r\r\nlibrary(dplyr)\r\n\r\n# From issue 4050\r\ndf <- tibble(a = 1:5)\r\nmutate(df, a = a + 1, .when = a > 3)\r\n#> # A tibble: 5 × 1\r\n#>       a\r\n#>   <int>\r\n#> 1     1\r\n#> 2     2\r\n#> 3     3\r\n#> 4     5\r\n#> 5     6\r\n\r\ndf <- tibble(x = 1:4, y = 5:8)\r\nmutate(df, x = -x, y = -y, .when = x < 4)\r\n#> # A tibble: 4 × 2\r\n#>       x     y\r\n#>   <int> <int>\r\n#> 1    -1    -5\r\n#> 2    -2    -6\r\n#> 3    -3    -7\r\n#> 4     4     8\r\n\r\n# More practical. Replace missing values.\r\ndf <- tibble(x = c(1, 2, NA, 4, NA))\r\nmutate(df, x = 0, .when = is.na(x))\r\n#> # A tibble: 5 × 1\r\n#>       x\r\n#>   <dbl>\r\n#> 1     1\r\n#> 2     2\r\n#> 3     0\r\n#> 4     4\r\n#> 5     0\r\n\r\n# Standardize missings across variables\r\ndf <- tibble(x = c(1, NA, 2, 4), y = c(1, 2, NA, 4), z = c(NA, \"b\", \"c\", \"d\"))\r\nmutate(df, x = NA, y = NA, z = NA, .when = is.na(x) | is.na(y) | is.na(z))\r\n#> # A tibble: 4 × 3\r\n#>       x     y z    \r\n#>   <dbl> <dbl> <chr>\r\n#> 1    NA    NA <NA> \r\n#> 2    NA    NA <NA> \r\n#> 3    NA    NA <NA> \r\n#> 4     4     4 d\r\n```\r\n\r\n## Performance\r\n\r\nI think performance is generally pretty good. My bar was mainly to be faster than what you could do with an `if_else()`. It is a lot more compact than an `if_else()` too.\r\n\r\n``` r\r\nlibrary(nycflights13)\r\nlibrary(vctrs)\r\nlibrary(dplyr)\r\n\r\nbig_flights <- vec_rep(flights, 100)\r\nbig_grouped_flights <- group_by(big_flights, year, month)\r\n\r\n# Small data, one condition, no groups\r\nbench::mark(\r\n  slow = mutate(\r\n    flights,\r\n    dep_delay = if_else(dep_time > 500, -dep_delay, dep_delay, missing = dep_delay)\r\n  ),\r\n  fast = mutate(\r\n    flights,\r\n    dep_delay = -dep_delay,\r\n    .when = dep_time > 500\r\n  ),\r\n  iterations = 5\r\n)\r\n#> # A tibble: 2 × 6\r\n#>   expression      min   median `itr/sec` mem_alloc `gc/sec`\r\n#>   <bch:expr> <bch:tm> <bch:tm>     <dbl> <bch:byt>    <dbl>\r\n#> 1 slow         25.3ms   25.5ms      39.0    41.7MB        0\r\n#> 2 fast         12.5ms   12.8ms      78.4    14.1MB        0\r\n\r\n# Small data, two conditions, no groups\r\nbench::mark(\r\n  slow = mutate(\r\n    flights,\r\n    dep_delay = if_else(dep_time > 500, -dep_delay, dep_delay, missing = dep_delay),\r\n    sched_dep_time = if_else(dep_time > 500, -sched_dep_time, sched_dep_time, missing = sched_dep_time)\r\n  ),\r\n  fast = mutate(\r\n    flights,\r\n    dep_delay = -dep_delay,\r\n    sched_dep_time = -sched_dep_time,\r\n    .when = dep_time > 500\r\n  ),\r\n  iterations = 5\r\n)\r\n#> # A tibble: 2 × 6\r\n#>   expression      min   median `itr/sec` mem_alloc `gc/sec`\r\n#>   <bch:expr> <bch:tm> <bch:tm>     <dbl> <bch:byt>    <dbl>\r\n#> 1 slow         25.7ms   36.2ms      27.9    72.1MB        0\r\n#> 2 fast         13.9ms     15ms      67.7    17.8MB        0\r\n\r\n# Big data, two conditions, no groups\r\nbench::mark(\r\n  slow = mutate(\r\n    big_flights,\r\n    dep_delay = if_else(dep_time > 500, -dep_delay, dep_delay, missing = dep_delay),\r\n    sched_dep_time = if_else(dep_time > 500, -sched_dep_time, sched_dep_time, missing = sched_dep_time)\r\n  ),\r\n  fast = mutate(\r\n    big_flights,\r\n    dep_delay = -dep_delay,\r\n    sched_dep_time = -sched_dep_time,\r\n    .when = dep_time > 500\r\n  ),\r\n  iterations = 5\r\n)\r\n#> Warning: Some expressions had a GC in every iteration; so filtering is disabled.\r\n#> # A tibble: 2 × 6\r\n#>   expression      min   median `itr/sec` mem_alloc `gc/sec`\r\n#>   <bch:expr> <bch:tm> <bch:tm>     <dbl> <bch:byt>    <dbl>\r\n#> 1 slow          2.54s    2.72s     0.363    7.04GB    1.31 \r\n#> 2 fast       806.87ms 972.97ms     1.01     1.73GB    0.805\r\n\r\n# Big data, two conditions, with groups\r\nbench::mark(\r\n  slow = mutate(\r\n    big_grouped_flights,\r\n    dep_delay = if_else(dep_time > 500, -dep_delay, dep_delay, missing = dep_delay),\r\n    sched_dep_time = if_else(dep_time > 500, -sched_dep_time, sched_dep_time, missing = sched_dep_time)\r\n  ),\r\n  fast = mutate(\r\n    big_grouped_flights,\r\n    dep_delay = -dep_delay,\r\n    sched_dep_time = -sched_dep_time,\r\n    .when = dep_time > 500\r\n  ),\r\n  iterations = 5\r\n)\r\n#> Warning: Some expressions had a GC in every iteration; so filtering is disabled.\r\n#> # A tibble: 2 × 6\r\n#>   expression      min   median `itr/sec` mem_alloc `gc/sec`\r\n#>   <bch:expr> <bch:tm> <bch:tm>     <dbl> <bch:byt>    <dbl>\r\n#> 1 slow             5s    5.45s     0.183    7.92GB    0.623\r\n#> 2 fast          2.33s    2.86s     0.339    3.71GB    0.679\r\n```",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6313/reactions",
#>       "total_count": 8,
#>       "+1": 5,
#>       "-1": 0,
#>       "laugh": 0,
#>       "hooray": 0,
#>       "confused": 0,
#>       "heart": 0,
#>       "rocket": 0,
#>       "eyes": 3
#>     },
#>     "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6313/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6262",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6262/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6262/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6262/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6262",
#>     "id": 1230134807,
#>     "node_id": "I_kwDOAGIUpc5JUl4X",
#>     "number": 6262,
#>     "title": "dplyr 1.1.0 revdep tracker",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 0,
#>     "created_at": "2022-05-09T19:10:08Z",
#>     "updated_at": "2022-08-02T15:44:05Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "## From join updates #5910\r\n- [ ] comperes: Produced warning in test\r\n- [ ] dodgr: Produced warnings in test\r\n- [ ] exuber: Produced warnings in test\r\n- [ ] lans2r: Produced warnings in test\r\n- [ ] MBNMAtime: Produced warnings in test\r\n- [ ] modeldb: Produced warnings in test\r\n- [ ] multicolor: Produced warnings in test\r\n- [ ] parsnip: Produced warnings in Rd file generation and examples\r\n- [x] sfnetworks: Error due to `sfc` not being orderable (tackling in vctrs) https://github.com/r-lib/vctrs/pull/1558\r\n- [ ] stars: Expected a different warning in test\r\n- [ ] Tplyr: Produced warnings in test\r\n\r\n## From between updates #6260 \r\n- [ ] brolgar: `between()` cast error in tests\r\n- [ ] cubble: `between()` cast error in vignette (double to character)\r\n- [ ] gmgm: `between()` cast error in tests (double to integer)\r\n- [ ] helda: `between()` cast error in examples\r\n- [ ] presenter: Unknown vignette failure\r\n- [ ] respR: `between()` cast error in examples (double to integer)\r\n\r\n## `arrange()` radix ordering #6263 \r\n- [x] dexter: Relied on `arrange()` and `group_by() %>% summarize()` having the same ordering https://github.com/dexter-psychometrics/dexter/pull/6\r\n\r\n## `data_frame_()` removal #6277 \r\n- [x] rabhit: Imported `data_frame_()` but never actually used it https://bitbucket.org/yaarilab/rabhit/issues/4/remove-data_frame_-import-from-dplyr \r\n\r\n## `dplyr::tbl_sum()` removal in favor of `pillar::tbl_sum()` #6284 \r\n- [x] groupr: https://github.com/ngriffiths21/groupr/pull/5 \r\n- [x] tabxplor https://github.com/BriceNocenti/tabxplor/pull/2\r\n\r\n## `case_when()` uses vctrs #6300\r\n- [ ] epocakir: Uses `case_when(~ ordered, TRUE ~ NA_integer_)`. Needs to use `GFR_stages[NA_integer_]` for default.\r\n- [ ] huxtable: Tries to use a mix of matrix and vector logicals on the LHS. Should probably un-dim, apply case-when, then re-dim.\r\n- [ ] unpivotr: Probably a case-when issue from the look of it. But not sure.\r\n\r\n## `if_else()` uses vctrs #6317\r\n- [ ] dm: `if_else(false = NULL)` when it should have used `list(NULL)` to fill in the list col\r\n- [ ] hablar: Likely a too strict test, something about this no longer erroring `if_else_(c(T, F, NA), 1, 1L)`\r\n- [ ] PVplr: Used `if_else(false = NULL)` when it should use `NA_character_`\r\n- [x] rsample: https://github.com/tidymodels/rsample/pull/341\r\n- [ ] seecolor: Trying to use a logical matrix in `if_else()`\r\n\r\n## `group_by()` with `vec_locate_sorted_groups()` #6297\r\n- None\r\n\r\n## `na_if()` vctrs update #6329\r\n- [ ] circumplex: Doing `dplyr::na_if(., \"NaN\")` on a double vector, I assume to replace `NaN` with `NA`?\r\n- [ ] forestmangr: Doing `dplyr::na_if(., 0)` where `.` is a tibble, I guess expecting each column to get na-if'd?\r\n- [ ] hlaR: Expecting a character `y` to be compatible with integer `x`\r\n- [ ] huito: \"`y` <character> to match type of `x` <data.frame>\" with `na_if()`, same as forestmangr?\r\n- [ ] itraxR: Looks like CRAN version had a problem that was fixed here in dev version. Related to `na_if()` on a data frame https://github.com/tombishop1/itraxR/commit/5de1717f60dffc134e20fed25344db0dacf37f91\r\n- [ ] JumpeR: Another \"Can't convert `y` <double> to match type of `x` <data.frame>\"\r\n- [ ] naniar: Another \"Can't convert `y` <double> to match type of `x` <tbl_df>\" in the `replace-with-na.Rmd` vignette\r\n- [ ] skater: Looks like calling `na_if(<chr>, 0)` in a vignette on column `dadid`\r\n- [ ] suddengains: Looks like `na_if(<dbl>, \"-Inf\")` which is weird because `-Inf == -Inf` does return `TRUE`\r\n- [ ] SwimmeR: Another: \"Can't convert `y` <character> to match type of `x` <data.frame>.\"\r\n\r\n## `nth()`, `first()`, `last()` vctrs update #6331\r\n- [ ] confoundr: \"Can't convert `default` <character> to match type of `x` <double>\", `first(x, default = \"NA\")` with double `x`\r\n- [ ] divseg: Does `dplyr::first(dplyr::cur_data())` expecting to get the first col of the data frame? Should use `pull()`.\r\n- [ ] finnts: `dplyr::filter(Date==max(Date)) %>% dplyr::last()` on a df where they should have used `pull(-1)`\r\n- [ ] FRK: Not sure, possibly related but hard to diagnose\r\n- [ ] janitor: `dplyr::last(dat)` on a data frame expecting last column, should use `pull()`\r\n- [ ] questionr: Broken because of janitor\r\n- [ ] tidygraph: `dplyr::count() %>% dplyr::first()` on a data frame, expecting first column, should use `pull()`\r\n\r\n## `lead()` and `lag()` update #6336 \r\n- [x] ferrn: typo https://github.com/huizezhang-sherry/ferrn/issues/8 \r\n- [ ] nonmemica: wrangle is causing this to break\r\n- [x] statar: typo https://github.com/matthieugomez/statar/issues/35\r\n- [ ] wrangle: \"Can't convert from `default` <double> to `x` <integer>\". Trying `lead(x, default = Inf)` with an integer `x`. Probably need to convert to double ahead of time if they really want this.\r\n\r\n## Database defunctions #6367 \r\nFixes here generally involve importing `dbplyr::sql()` rather than `dplyr::sql()` https://github.com/tidyverse/dplyr/pull/6367#issuecomment-1195841962. \r\n- [ ] bigrquery\r\n- [ ] childesr\r\n- [ ] ckanr\r\n- [ ] dm\r\n- [ ] etl\r\n- [ ] farr\r\n- [ ] funneljoin\r\n- [ ] geospark\r\n- [ ] RPresto\r\n\r\n## Misc\r\n- [x] headliner: https://github.com/r-lib/rlang/issues/1421\r\n\r\n\r\n---\r\n\r\n## Would be broken by `nth()`, `first()`, `last()` vctrs update if we made `first(list(1))` use `vec_slice()` #6331\r\n- [x] DataFakeR: `%>% tidygraph::pull(table) %>% dplyr::first()` on a list-col, expecting `first()` to give the first element\r\n- [x] dyngen: Through GillespieSSA2, does `str_split(\" \") %>% first()` expecting to get the first element of the list\r\n- [x] dynwrap: Programmatic usage of `first()` on a list, expecting to get the first element\r\n- [x] GillespieSSA2: does `str_split(\" \") %>% first()` expecting to get the first element of the list (see also dyngen)\r\n- [x] phenofit: `last()` on a list, expecting the last list element\r\n- [x] TidyMultiqc: `first()` on a list expecting to get the first element\r\n- [x] xpose: `first()` on a list expecting to get the first element\r\n\r\nMarked as complete because we decided not to break this. But tracking here anyways.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6262/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/6262/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6252",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6252/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6252/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6252/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6252",
#>     "id": 1221859613,
#>     "node_id": "PR_kwDOAGIUpc43HX3h",
#>     "number": 6252,
#>     "title": "POC: Set focus to new and used columns after mutate()",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 7,
#>     "created_at": "2022-04-30T15:42:45Z",
#>     "updated_at": "2022-08-28T01:55:53Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": false,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6252",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6252",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6252.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6252.patch",
#>       "merged_at": {}
#>     },
#>     "body": "Needs https://github.com/r-lib/pillar/pull/549.\r\n\r\nIn the example below, `speed`, `air_time` and `distance` are shown because they played a role in the `mutate()` . Normally none of these columns are visible.\r\n\r\nThe focus columns are highlighted with an underline, this formatting can't be shown in a reprex.\r\n\r\n``` r\r\nlibrary(dplyr)\r\nnycflights13::flights %>%\r\n  mutate(speed = air_time / distance)\r\n#> # A tibble:      336,776 × 20\r\n#> # Focus columns: speed, air_time, distance\r\n#>     year month   day dep…¹ sch…² dep…³ arr…⁴ sch…⁵ arr…⁶ air_time distance speed\r\n#>    <int> <int> <int> <int> <int> <dbl> <int> <int> <dbl>    <dbl>    <dbl> <dbl>\r\n#>  1  2013     1     1   517   515     2   830   819    11      227     1400 0.162\r\n#>  2  2013     1     1   533   529     4   850   830    20      227     1416 0.160\r\n#>  3  2013     1     1   542   540     2   923   850    33      160     1089 0.147\r\n#>  4  2013     1     1   544   545    -1  1004  1022   -18      183     1576 0.116\r\n#>  5  2013     1     1   554   600    -6   812   837   -25      116      762 0.152\r\n#>  6  2013     1     1   554   558    -4   740   728    12      150      719 0.209\r\n#>  7  2013     1     1   555   600    -5   913   854    19      158     1065 0.148\r\n#>  8  2013     1     1   557   600    -3   709   723   -14       53      229 0.231\r\n#>  9  2013     1     1   557   600    -3   838   846    -8      140      944 0.148\r\n#> 10  2013     1     1   558   600    -2   753   745     8      138      733 0.188\r\n#> # … with 336,766 more rows, abbreviated variable names ¹​dep_time,\r\n#> #   ²​sched_dep_time, ³​dep_delay, ⁴​arr_time, ⁵​sched_arr_time, ⁶​arr_delay, and 8\r\n#> #   more variables: carrier <chr>, flight <int>, tailnum <chr>, origin <chr>,\r\n#> #   dest <chr>, hour <dbl>, minute <dbl>, time_hour <dttm>\r\n```\r\n\r\n<sup>Created on 2022-04-30 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1)<\/sup>",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6252/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/6252/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6236",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6236/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6236/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6236/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6236",
#>     "id": 1209539413,
#>     "node_id": "I_kwDOAGIUpc5IGBtV",
#>     "number": 6236,
#>     "title": "`rowwise()` with a mutate() call with warnings is very slow",
#>     "user": {
#>       "login": "charliejhadley",
#>       "id": 9363263,
#>       "node_id": "MDQ6VXNlcjkzNjMyNjM=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/9363263?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/charliejhadley",
#>       "html_url": "https://github.com/charliejhadley",
#>       "followers_url": "https://api.github.com/users/charliejhadley/followers",
#>       "following_url": "https://api.github.com/users/charliejhadley/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/charliejhadley/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/charliejhadley/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/charliejhadley/subscriptions",
#>       "organizations_url": "https://api.github.com/users/charliejhadley/orgs",
#>       "repos_url": "https://api.github.com/users/charliejhadley/repos",
#>       "events_url": "https://api.github.com/users/charliejhadley/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/charliejhadley/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "labels": [
#>       {
#>         "id": 529648245,
#>         "node_id": "MDU6TGFiZWw1Mjk2NDgyNDU=",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/performance%20:rocket:",
#>         "name": "performance :rocket:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       },
#>       {
#>         "id": 4039306011,
#>         "node_id": "LA_kwDOAGIUpc7wwusb",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/rlang%20:microscope:",
#>         "name": "rlang :microscope:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {
#>       "login": "lionel-",
#>       "id": 4465050,
#>       "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/lionel-",
#>       "html_url": "https://github.com/lionel-",
#>       "followers_url": "https://api.github.com/users/lionel-/followers",
#>       "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>       "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>       "repos_url": "https://api.github.com/users/lionel-/repos",
#>       "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "assignees": [
#>       {
#>         "login": "lionel-",
#>         "id": 4465050,
#>         "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/lionel-",
#>         "html_url": "https://github.com/lionel-",
#>         "followers_url": "https://api.github.com/users/lionel-/followers",
#>         "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>         "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>         "repos_url": "https://api.github.com/users/lionel-/repos",
#>         "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       }
#>     ],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 6,
#>     "created_at": "2022-04-20T11:14:51Z",
#>     "updated_at": "2022-08-22T14:42:07Z",
#>     "closed_at": {},
#>     "author_association": "CONTRIBUTOR",
#>     "active_lock_reason": {},
#>     "body": "As identified by @debruine here https://github.com/tidyverse/dplyr/issues/6236#issuecomment-1103972470 this issue is actually caused when mutate() is used after rowwise() and generates warnings.\r\n\r\nThis code takes ~11 seconds to run in a clean R session\r\n\r\n```r\r\nlibrary(dplyr)\r\nlibrary(tictoc)\r\ntic()\r\nfoo <- tibble(\r\n  id = 1:800\r\n) %>% \r\n  rowwise() %>% \r\n  mutate(group_b_mean = mean(NULL))\r\ntoc()\r\n# 11.584 sec elapsed\r\n```\r\n\r\nPlease note that weirdly the same code takes <1second when run with the {reprex} addin.\r\n\r\nMany thanks to debruine for figuring this out.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6236/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/6236/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6214",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6214/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6214/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6214/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6214",
#>     "id": 1171140480,
#>     "node_id": "I_kwDOAGIUpc5Fzi-A",
#>     "number": 6214,
#>     "title": "`.by` argument as alternative to `group_by`",
#>     "user": {
#>       "login": "markfairbanks",
#>       "id": 28766000,
#>       "node_id": "MDQ6VXNlcjI4NzY2MDAw",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/28766000?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/markfairbanks",
#>       "html_url": "https://github.com/markfairbanks",
#>       "followers_url": "https://api.github.com/users/markfairbanks/followers",
#>       "following_url": "https://api.github.com/users/markfairbanks/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/markfairbanks/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/markfairbanks/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/markfairbanks/subscriptions",
#>       "organizations_url": "https://api.github.com/users/markfairbanks/orgs",
#>       "repos_url": "https://api.github.com/users/markfairbanks/repos",
#>       "events_url": "https://api.github.com/users/markfairbanks/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/markfairbanks/received_events",
#>       "type": "User",
#>       "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": 1728164976,
#>         "node_id": "MDU6TGFiZWwxNzI4MTY0OTc2",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/grouping%20:family_man_woman_girl_boy:",
#>         "name": "grouping :family_man_woman_girl_boy:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 19,
#>     "created_at": "2022-03-16T14:57:52Z",
#>     "updated_at": "2022-08-01T14:14:21Z",
#>     "closed_at": {},
#>     "author_association": "CONTRIBUTOR",
#>     "active_lock_reason": {},
#>     "body": "_Edit:_ Updated to reflect @DavisVaughan's suggestion [here](https://github.com/tidyverse/dplyr/issues/6214#issuecomment-1073887193).\r\n\r\nAny thoughts on implementing a `.by` arg so that functions can operate by group without returning a `grouped_df`?\r\n\r\nBasically this:\r\n\r\n```r\r\ndf <- tibble(x = 1:3, y = c(\"a\", \"a\", \"b\"))\r\n\r\ndf %>%\r\n  mutate(pct = x/sum(x), .by = y)\r\n```\r\n\r\nwould be equivalent to this:\r\n\r\n```r\r\ndf %>%\r\n  group_by(y) %>%\r\n  mutate(pct = x/sum(x)) %>%\r\n  ungroup()\r\n```",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6214/reactions",
#>       "total_count": 4,
#>       "+1": 4,
#>       "-1": 0,
#>       "laugh": 0,
#>       "hooray": 0,
#>       "confused": 0,
#>       "heart": 0,
#>       "rocket": 0,
#>       "eyes": 0
#>     },
#>     "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6214/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6204",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6204/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6204/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6204/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6204",
#>     "id": 1158379609,
#>     "node_id": "I_kwDOAGIUpc5FC3hZ",
#>     "number": 6204,
#>     "title": "Dedicated function for selecting from current data",
#>     "user": {
#>       "login": "mikkmart",
#>       "id": 57088219,
#>       "node_id": "MDQ6VXNlcjU3MDg4MjE5",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/57088219?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/mikkmart",
#>       "html_url": "https://github.com/mikkmart",
#>       "followers_url": "https://api.github.com/users/mikkmart/followers",
#>       "following_url": "https://api.github.com/users/mikkmart/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/mikkmart/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/mikkmart/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/mikkmart/subscriptions",
#>       "organizations_url": "https://api.github.com/users/mikkmart/orgs",
#>       "repos_url": "https://api.github.com/users/mikkmart/repos",
#>       "events_url": "https://api.github.com/users/mikkmart/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/mikkmart/received_events",
#>       "type": "User",
#>       "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": 1880639897,
#>         "node_id": "MDU6TGFiZWwxODgwNjM5ODk3",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/each-col%20%E2%86%94%EF%B8%8F",
#>         "name": "each-col ↔️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {
#>       "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",
#>       "site_admin": false
#>     },
#>     "assignees": [
#>       {
#>         "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",
#>         "site_admin": false
#>       }
#>     ],
#>     "milestone": {},
#>     "comments": 3,
#>     "created_at": "2022-03-03T12:58:41Z",
#>     "updated_at": "2022-08-22T15:52:58Z",
#>     "closed_at": {},
#>     "author_association": "NONE",
#>     "active_lock_reason": {},
#>     "body": "Would it be useful to have a dedicated function (say, `pick()`) to select columns from the current data? Currently, `across()` with only a `.cols` argument serves this role.\r\n\r\nI would see a dedicated function having at least three advantages:\r\n\r\n1.  Nicer syntax for union selections: `pick(1, last_col())` vs. `across(c(1, last_col()))`.\r\n2.  Better semantics. `across()` makes sense when there’s functions to apply, but less so when it’s used just for selecting columns. `pick()` seems intuitive for only selecting columns.\r\n3.  Reuse existing patterns: `across(c(1:2, 4), mean)` vs. `map_df(pick(1:2, 4), mean)`. The first requires you to know that `across()` can select columns *and* apply a function, latter can re-use existing function application methods.\r\n\r\nThe last point is particularly important if/when `...` is deprecated in `across()` (\\#6073), as funtionality would not be identical anymore. For example:\r\n\r\n``` r\r\n# With no ..., need to use an anonymous function for na.rm\r\nacross(c(1, 3:4), ~ mean(., na.rm = TRUE))\r\n\r\n# Could be avoided with `pick()`\r\nmap_df(pick(1, 3:4), mean, na.rm = TRUE)\r\n```\r\n\r\nI would see the primary uses for this as:\r\n\r\n1.  Replace `across()` in e.g. `group_by()` selections `group_by(across(c(1, 3:5)))` vs. `group_by(pick(1, 3:5))`. Big semantic and syntactic win, IMO.\r\n2.  Passing arguments to functions that take data frame or matrix arguments. For example common questions about taking means or sums over rows in data frames. In my experience people don’t think to `apply(across(1:5), 1, f)`, but `apply(pick(1:5), 1, f)` might be more intuitive.\r\n\r\nI could think of two ways to implement this as a wrapper:\r\n\r\n``` r\r\npick <- function(...) {\r\n  across(.cols = c(...))\r\n}\r\n```\r\n\r\nOr:\r\n\r\n``` r\r\npick <- function(...) {\r\n  select(cur_data(), ...)\r\n}\r\n```\r\n\r\nAlthough, particularly with the `across()` route, it would seem nicer to reverse the dependency and extract the relevant parts from `across()` into`pick()` instead.\r\n\r\nI appreciate your consideration for this feature request.\r\n",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6204/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/6204/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6170",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6170/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6170/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6170/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6170",
#>     "id": 1120424206,
#>     "node_id": "I_kwDOAGIUpc5CyFEO",
#>     "number": 6170,
#>     "title": "`dplyr::group_by_prepare()` does not work with lazy tables and `across()`",
#>     "user": {
#>       "login": "mgirlich",
#>       "id": 18258854,
#>       "node_id": "MDQ6VXNlcjE4MjU4ODU0",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/18258854?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/mgirlich",
#>       "html_url": "https://github.com/mgirlich",
#>       "followers_url": "https://api.github.com/users/mgirlich/followers",
#>       "following_url": "https://api.github.com/users/mgirlich/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/mgirlich/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/mgirlich/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/mgirlich/subscriptions",
#>       "organizations_url": "https://api.github.com/users/mgirlich/orgs",
#>       "repos_url": "https://api.github.com/users/mgirlich/repos",
#>       "events_url": "https://api.github.com/users/mgirlich/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/mgirlich/received_events",
#>       "type": "User",
#>       "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"
#>       },
#>       {
#>         "id": 1728164976,
#>         "node_id": "MDU6TGFiZWwxNzI4MTY0OTc2",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/grouping%20:family_man_woman_girl_boy:",
#>         "name": "grouping :family_man_woman_girl_boy:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 2,
#>     "created_at": "2022-02-01T09:29:04Z",
#>     "updated_at": "2022-08-01T14:27:16Z",
#>     "closed_at": {},
#>     "author_association": "NONE",
#>     "active_lock_reason": {},
#>     "body": "``` r\r\nlibrary(dplyr, warn.conflicts = FALSE)\r\nlibrary(rlang)\r\ndf <- mtcars\r\ndt <- dtplyr::lazy_dt(mtcars)\r\n\r\ngroup_by_prepare(df, mpg, .add = FALSE, caller_env = caller_env())\r\n#> $data\r\n#>                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb\r\n#> Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4\r\n#> Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4\r\n#> Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1\r\n#> Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1\r\n#> Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2\r\n#> Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1\r\n#> Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4\r\n#> Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2\r\n#> Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2\r\n#> Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4\r\n#> Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4\r\n#> Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3\r\n#> Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3\r\n#> Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3\r\n#> Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4\r\n#> Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4\r\n#> Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4\r\n#> Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1\r\n#> Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2\r\n#> Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1\r\n#> Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1\r\n#> Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2\r\n#> AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2\r\n#> Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4\r\n#> Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2\r\n#> Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1\r\n#> Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2\r\n#> Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2\r\n#> Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4\r\n#> Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6\r\n#> Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8\r\n#> Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2\r\n#> \r\n#> $groups\r\n#> $groups[[1]]\r\n#> mpg\r\n#> \r\n#> \r\n#> $group_names\r\n#> [1] \"mpg\"\r\ngroup_by_prepare(dt, mpg, .add = FALSE, caller_env = caller_env())\r\n#> $data\r\n#> Source: local data table [32 x 11]\r\n#> Call:   `_DT1`\r\n#> \r\n#>     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb\r\n#>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>\r\n#> 1  21       6   160   110  3.9   2.62  16.5     0     1     4     4\r\n#> 2  21       6   160   110  3.9   2.88  17.0     0     1     4     4\r\n#> 3  22.8     4   108    93  3.85  2.32  18.6     1     1     4     1\r\n#> 4  21.4     6   258   110  3.08  3.22  19.4     1     0     3     1\r\n#> 5  18.7     8   360   175  3.15  3.44  17.0     0     0     3     2\r\n#> 6  18.1     6   225   105  2.76  3.46  20.2     1     0     3     1\r\n#> # … with 26 more rows\r\n#> \r\n#> # Use as.data.table()/as.data.frame()/as_tibble() to access results\r\n#> \r\n#> $groups\r\n#> $groups[[1]]\r\n#> mpg\r\n#> \r\n#> \r\n#> $group_names\r\n#> [1] \"mpg\"\r\n\r\ngroup_by_prepare(df, across(mpg), .add = FALSE, caller_env = caller_env())\r\n#> $data\r\n#>                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb\r\n#> Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4\r\n#> Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4\r\n#> Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1\r\n#> Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1\r\n#> Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2\r\n#> Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1\r\n#> Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4\r\n#> Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2\r\n#> Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2\r\n#> Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4\r\n#> Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4\r\n#> Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3\r\n#> Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3\r\n#> Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3\r\n#> Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4\r\n#> Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4\r\n#> Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4\r\n#> Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1\r\n#> Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2\r\n#> Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1\r\n#> Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1\r\n#> Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2\r\n#> AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2\r\n#> Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4\r\n#> Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2\r\n#> Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1\r\n#> Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2\r\n#> Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2\r\n#> Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4\r\n#> Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6\r\n#> Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8\r\n#> Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2\r\n#> \r\n#> $groups\r\n#> $groups[[1]]\r\n#> mpg\r\n#> \r\n#> \r\n#> $group_names\r\n#> [1] \"mpg\"\r\ngroup_by_prepare(dt, across(mpg), .add = FALSE, caller_env = caller_env())\r\n#> Error in `group_by_prepare()`:\r\n#> ! Must group by variables found in `.data`.\r\n#> • Column `across(mpg)` is not found.\r\n```\r\n\r\n<sup>Created on 2022-02-01 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1)<\/sup>\r\n\r\nThe issue is the [line](https://github.com/tidyverse/dplyr/blob/6d22c0f0e1b0d945f2fff28cecb71d9cd548098b/R/group-by.r#L228)\r\n\r\n```r\r\ncol_names <- names(exprs_auto_name(vars))\r\n```",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6170/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/6170/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6102",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6102/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6102/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6102/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6102",
#>     "id": 1065950378,
#>     "node_id": "PR_kwDOAGIUpc4vH6KB",
#>     "number": 6102,
#>     "title": "`mutate()` preserves attributes of grouped data frames",
#>     "user": {
#>       "login": "romainfrancois",
#>       "id": 2625526,
#>       "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/romainfrancois",
#>       "html_url": "https://github.com/romainfrancois",
#>       "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>       "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>       "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>       "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>       "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 5,
#>     "created_at": "2021-11-29T11:57:32Z",
#>     "updated_at": "2021-12-15T08:26:47Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": false,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6102",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6102",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6102.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6102.patch",
#>       "merged_at": {}
#>     },
#>     "body": "closes #6100 \r\n\r\n``` r\r\nlibrary(dplyr, warn.conflicts = FALSE)\r\n\r\nlibrary(purrr)\r\nattr(mtcars, \"test\") <- \"foo\"\r\nmtcars_grouped <- group_by(mtcars, cyl)\r\n\r\nmtcars %>% \r\n  mutate(new_col = 1) %>% \r\n  attr(\"test\")\r\n#> [1] \"foo\"\r\n\r\nmtcars_grouped %>% \r\n  mutate(new_col = 1) %>% \r\n  attr(\"test\")\r\n#> [1] \"foo\"\r\n```\r\n\r\n<sup>Created on 2021-11-29 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1.9000)<\/sup>",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6102/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/6102/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6100",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6100/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6100/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6100/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6100",
#>     "id": 1065634441,
#>     "node_id": "I_kwDOAGIUpc4_hEqJ",
#>     "number": 6100,
#>     "title": "data.frame attributes are preserved on `mutate()` but dropped on `group_by |> mutate`",
#>     "user": {
#>       "login": "MilesMcBain",
#>       "id": 9996346,
#>       "node_id": "MDQ6VXNlcjk5OTYzNDY=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/9996346?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/MilesMcBain",
#>       "html_url": "https://github.com/MilesMcBain",
#>       "followers_url": "https://api.github.com/users/MilesMcBain/followers",
#>       "following_url": "https://api.github.com/users/MilesMcBain/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/MilesMcBain/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/MilesMcBain/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/MilesMcBain/subscriptions",
#>       "organizations_url": "https://api.github.com/users/MilesMcBain/orgs",
#>       "repos_url": "https://api.github.com/users/MilesMcBain/repos",
#>       "events_url": "https://api.github.com/users/MilesMcBain/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/MilesMcBain/received_events",
#>       "type": "User",
#>       "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"
#>       },
#>       {
#>         "id": 3407327207,
#>         "node_id": "LA_kwDOAGIUpc7LF6_n",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/rows%20%E2%86%95%EF%B8%8F",
#>         "name": "rows ↕️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "Operations on rows: filter(), slice(), arrange()"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 2,
#>     "created_at": "2021-11-29T05:43:44Z",
#>     "updated_at": "2022-07-22T18:34:39Z",
#>     "closed_at": {},
#>     "author_association": "NONE",
#>     "active_lock_reason": {},
#>     "body": "Reprex:\r\n``` r\r\nlibrary(dplyr)\r\n#>\r\n#> Attaching package: 'dplyr'\r\n#> The following objects are masked from 'package:stats':\r\n#>\r\n#>     filter, lag\r\n#> The following objects are masked from 'package:base':\r\n#>\r\n#>     intersect, setdiff, setequal, union\r\nlibrary(purrr)\r\nattr(mtcars, \"test\") <- \"foo\"\r\nmtcars_grouped <- group_by(mtcars, cyl)\r\n\r\nmtcars |>\r\n  mutate(new_col = 1) |>\r\n  attributes() |>\r\n  pluck(\"test\")\r\n#> [1] \"foo\"\r\n\r\nmtcars_grouped |>\r\n  mutate(new_col = 1) |>\r\n  attributes() |>\r\n  pluck(\"test\")\r\n#> NULL\r\n\r\nmtcars_grouped |>\r\n  mutate(across(where(is.complex), as.character)) |>\r\n  attributes() |>\r\n  pluck(\"test\")\r\n#> NULL\r\n# did nothing but still lost attrs on the base data.frame\r\n```\r\n\r\nIt would be better if no attributes were lost with mutate. Feels weird in the last case where no mutate actually gets done.\r\n\r\nHowever if `group_by() |> mutate()` must drop attributes, it's probably better that `mutate` does also. You can easily get tricked into thinking some code is going to work, but then it bombs when it accidentally gets passed some sticky groups. This happened to me today, 4 levels of package context up from where the mutate was. \r\n",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6100/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/6100/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6091",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6091/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6091/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6091/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6091",
#>     "id": 1056418250,
#>     "node_id": "I_kwDOAGIUpc4-96nK",
#>     "number": 6091,
#>     "title": "Deprecate support for filter(, <matrix with 1 column>)",
#>     "user": {
#>       "login": "romainfrancois",
#>       "id": 2625526,
#>       "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/romainfrancois",
#>       "html_url": "https://github.com/romainfrancois",
#>       "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>       "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>       "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>       "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>       "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>       "type": "User",
#>       "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": 3407327207,
#>         "node_id": "LA_kwDOAGIUpc7LF6_n",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/rows%20%E2%86%95%EF%B8%8F",
#>         "name": "rows ↕️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "Operations on rows: filter(), slice(), arrange()"
#>       },
#>       {
#>         "id": 4349991067,
#>         "node_id": "LA_kwDOAGIUpc8AAAABA0eYmw",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/lifecycle%20:butterfly:",
#>         "name": "lifecycle :butterfly:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {
#>       "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",
#>       "site_admin": false
#>     },
#>     "assignees": [
#>       {
#>         "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",
#>         "site_admin": false
#>       }
#>     ],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 2,
#>     "created_at": "2021-11-17T17:47:43Z",
#>     "updated_at": "2022-08-22T14:12:49Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "in https://github.com/tidyverse/dplyr/pull/6083 we've let `filter()` handle matrices of 1 column for the time being. At some point this should warn, and then error. \r\n\r\nPackages currently concerned: \r\n - egor: https://github.com/tilltnet/egor/issues/76\r\n - ggcharts: https://github.com/thomas-neitmann/ggcharts/pull/100\r\n - janitor: https://github.com/sfirke/janitor/pull/463\r\n - Momocs: https://github.com/MomX/Momocs/pull/222\r\n - MRFcov: https://github.com/nicholasjclark/MRFcov/pull/32\r\n - multifear:  https://github.com/AngelosPsy/multifear/pull/10\r\n - psfmi: https://github.com/mwheymans/psfmi/pull/5\r\n - psycModel: https://github.com/jasonmoy28/psycModel/pull/8\r\n - tangram.pipe\r\n - TeachHist\r\n - validata\r\n - xpose",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6091/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/6091/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6022",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6022/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6022/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6022/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6022",
#>     "id": 999263375,
#>     "node_id": "I_kwDOAGIUpc47j4yP",
#>     "number": 6022,
#>     "title": "Add argument `na_matches = c(\"na\", \"never\")` to `rows_*()` functions",
#>     "user": {
#>       "login": "mgirlich",
#>       "id": 18258854,
#>       "node_id": "MDQ6VXNlcjE4MjU4ODU0",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/18258854?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/mgirlich",
#>       "html_url": "https://github.com/mgirlich",
#>       "followers_url": "https://api.github.com/users/mgirlich/followers",
#>       "following_url": "https://api.github.com/users/mgirlich/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/mgirlich/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/mgirlich/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/mgirlich/subscriptions",
#>       "organizations_url": "https://api.github.com/users/mgirlich/orgs",
#>       "repos_url": "https://api.github.com/users/mgirlich/repos",
#>       "events_url": "https://api.github.com/users/mgirlich/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/mgirlich/received_events",
#>       "type": "User",
#>       "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": 1257707950,
#>         "node_id": "MDU6TGFiZWwxMjU3NzA3OTUw",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/tables%20%F0%9F%A7%AE",
#>         "name": "tables 🧮",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "joins and set operations"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2021-09-17T11:47:42Z",
#>     "updated_at": "2022-04-16T13:34:34Z",
#>     "closed_at": {},
#>     "author_association": "NONE",
#>     "active_lock_reason": {},
#>     "body": "Like the `*_join()` functions the `rows_*()` functions should get an argument `na_matches = c(\"na\", \"never\")`.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6022/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/6022/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6005",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6005/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6005/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6005/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6005",
#>     "id": 990144956,
#>     "node_id": "MDU6SXNzdWU5OTAxNDQ5NTY=",
#>     "number": 6005,
#>     "title": "Unenhanced warnings are emitted from `mutate()` when run in a `reprex()`",
#>     "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",
#>       "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": 3407329987,
#>         "node_id": "LA_kwDOAGIUpc7LF7rD",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/columns%20%E2%86%94%EF%B8%8F",
#>         "name": "columns ↔️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "Operations on columns: mutate(), select(),  rename(), relocate()"
#>       },
#>       {
#>         "id": 4039306011,
#>         "node_id": "LA_kwDOAGIUpc7wwusb",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/rlang%20:microscope:",
#>         "name": "rlang :microscope:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {
#>       "login": "lionel-",
#>       "id": 4465050,
#>       "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/lionel-",
#>       "html_url": "https://github.com/lionel-",
#>       "followers_url": "https://api.github.com/users/lionel-/followers",
#>       "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>       "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>       "repos_url": "https://api.github.com/users/lionel-/repos",
#>       "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "assignees": [
#>       {
#>         "login": "lionel-",
#>         "id": 4465050,
#>         "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/lionel-",
#>         "html_url": "https://github.com/lionel-",
#>         "followers_url": "https://api.github.com/users/lionel-/followers",
#>         "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>         "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>         "repos_url": "https://api.github.com/users/lionel-/repos",
#>         "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       }
#>     ],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 4,
#>     "created_at": "2021-09-07T16:14:59Z",
#>     "updated_at": "2022-08-18T16:23:00Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "When run with `reprex::reprex()`:\r\n\r\n``` r\r\nlibrary(dplyr)\r\n\r\nfoo <- function() {\r\n  warning(\"foo\")\r\n  NA\r\n}\r\n\r\ndf <- tibble(x = 1)\r\n\r\ndf <- mutate(df, x = foo())\r\n#> Warning in foo(): foo\r\n```\r\n\r\nvs when run interactively:\r\n\r\n```r\r\ndf <- mutate(df, x = foo())\r\n#> Warning message:\r\n#> Problem with `mutate()` column `x`.\r\n#> ℹ `x = foo()`.\r\n#> ℹ foo \r\n```\r\n\r\nI think this is related to the changes from https://github.com/tidyverse/dplyr/pull/5686, in particular it is about the `maybe_restart()` bit here that occurs when the warning is muffled\r\n\r\nhttps://github.com/tidyverse/dplyr/blob/87d1cecd7285f935ee3a202af0f74b9c1a640f7d/R/mutate.R#L427-L446\r\n\r\nI guess in the stack of `reprex()`, someone is muffling the warnings as it captures them to be able to print them out later on?\r\n\r\nSince it was slow to throw the enhanced warnings, maybe this is the best we can do, but it wasn't mentioned in #5686 as a potential issue so I figured I'd bring it up in case @lionel- has any thoughts here",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6005/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/6005/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5573",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5573/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5573/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5573/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/5573",
#>     "id": 729734643,
#>     "node_id": "MDU6SXNzdWU3Mjk3MzQ2NDM=",
#>     "number": 5573,
#>     "title": "Remove lazy eval fallbacks",
#>     "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",
#>       "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": 4349991067,
#>         "node_id": "LA_kwDOAGIUpc8AAAABA0eYmw",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/lifecycle%20:butterfly:",
#>         "name": "lifecycle :butterfly:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 5,
#>     "created_at": "2020-10-26T16:51:26Z",
#>     "updated_at": "2022-08-04T22:09:28Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "They shouldn't be needed anymore, and they make the error messages unnecessarily confusing. (Have been deprecated since 0.7.0 released June 2017)",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5573/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/5573/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5290",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5290/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5290/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5290/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/5290",
#>     "id": 628630066,
#>     "node_id": "MDU6SXNzdWU2Mjg2MzAwNjY=",
#>     "number": 5290,
#>     "title": "Add dplyr_sticky_cols() or similar",
#>     "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",
#>       "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": 3407329987,
#>         "node_id": "LA_kwDOAGIUpc7LF7rD",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/columns%20%E2%86%94%EF%B8%8F",
#>         "name": "columns ↔️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "Operations on columns: mutate(), select(),  rename(), relocate()"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 2,
#>     "created_at": "2020-06-01T18:12:50Z",
#>     "updated_at": "2022-08-18T23:43:14Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "So that when you implement a tibble subclass with sticky columns, you don't need to add a new `select()` method.  Likely to involve renaming `ensure_group_vars()`",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5290/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/5290/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5272",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5272/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5272/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5272/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/5272",
#>     "id": 624662278,
#>     "node_id": "MDU6SXNzdWU2MjQ2NjIyNzg=",
#>     "number": 5272,
#>     "title": "`dplyr_col_modify()` and recycling",
#>     "user": {
#>       "login": "lionel-",
#>       "id": 4465050,
#>       "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/lionel-",
#>       "html_url": "https://github.com/lionel-",
#>       "followers_url": "https://api.github.com/users/lionel-/followers",
#>       "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>       "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>       "repos_url": "https://api.github.com/users/lionel-/repos",
#>       "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>       "type": "User",
#>       "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": 544019342,
#>         "node_id": "MDU6TGFiZWw1NDQwMTkzNDI=",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/vctrs%20%E2%86%97%EF%B8%8F",
#>         "name": "vctrs ↗️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 7,
#>     "created_at": "2020-05-26T07:32:15Z",
#>     "updated_at": "2022-08-01T13:17:01Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "I think this call should be in the generic before dispatch, rather than in the `data.frame` method:\r\n\r\n```r\r\n  cols <- vec_recycle_common(!!!cols, .size = nrow(data))\r\n```\r\n\r\nToo late for 1.0 but worth considering for 1.1.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5272/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/5272/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5242",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5242/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5242/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5242/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/5242",
#>     "id": 617578055,
#>     "node_id": "MDU6SXNzdWU2MTc1NzgwNTU=",
#>     "number": 5242,
#>     "title": "`slice()` should validate inputs with `vec_as_location()`",
#>     "user": {
#>       "login": "lionel-",
#>       "id": 4465050,
#>       "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/lionel-",
#>       "html_url": "https://github.com/lionel-",
#>       "followers_url": "https://api.github.com/users/lionel-/followers",
#>       "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>       "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>       "repos_url": "https://api.github.com/users/lionel-/repos",
#>       "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>       "type": "User",
#>       "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": 544019342,
#>         "node_id": "MDU6TGFiZWw1NDQwMTkzNDI=",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/vctrs%20%E2%86%97%EF%B8%8F",
#>         "name": "vctrs ↗️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       },
#>       {
#>         "id": 3407327207,
#>         "node_id": "LA_kwDOAGIUpc7LF6_n",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/rows%20%E2%86%95%EF%B8%8F",
#>         "name": "rows ↕️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "Operations on rows: filter(), slice(), arrange()"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 11,
#>     "created_at": "2020-05-13T16:14:07Z",
#>     "updated_at": "2022-08-04T13:32:16Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "And call `vec_as_subscript()` first to cause an error with logical inputs.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5242/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/5242/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   }
#> ] 
gh("/repos/{owner}/{repo}/issues", owner = "hadley", repo = "dplyr")
#> [
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6451",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6451/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6451/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6451/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6451",
#>     "id": 1365114960,
#>     "node_id": "PR_kwDOAGIUpc4-iPHg",
#>     "number": 6451,
#>     "title": "Switch to radix ordering in more places",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2022-09-07T19:51:32Z",
#>     "updated_at": "2022-09-08T11:48:26Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": false,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6451",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6451",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6451.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6451.patch",
#>       "merged_at": {}
#>     },
#>     "body": "- `nth(order_by =)`\r\n- `with_order()`\r\n\r\nThis means that `vec_order_base()` is now only used in the `dplyr.legacy_locale` code path of `group_by()`. And I might be able to remove that in another PR by using `dplyr_order_legacy()`, which is used in the `arrange()` legacy path. I'll take a look.\r\n\r\nI did not feel like this needs a news bullet, because it is highly unlikely to affect much code, and we don't provide a way to opt out of this.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6451/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/6451/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6446",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6446/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6446/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6446/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6446",
#>     "id": 1358939438,
#>     "node_id": "I_kwDOAGIUpc5Q_8Uu",
#>     "number": 6446,
#>     "title": "Should joins have `.before` and `.after` arguments?",
#>     "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",
#>       "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": 1257707950,
#>         "node_id": "MDU6TGFiZWwxMjU3NzA3OTUw",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/tables%20%F0%9F%A7%AE",
#>         "name": "tables 🧮",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "joins and set operations"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2022-09-01T14:26:28Z",
#>     "updated_at": "2022-09-01T21:42:12Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "To match `mutate()`",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6446/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/6446/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6445",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6445/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6445/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6445/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6445",
#>     "id": 1358891293,
#>     "node_id": "I_kwDOAGIUpc5Q_wkd",
#>     "number": 6445,
#>     "title": "Better warning for *-to-many join?",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 6,
#>     "created_at": "2022-09-01T13:55:10Z",
#>     "updated_at": "2022-09-07T13:17:11Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "Currently:\r\n\r\n```R\r\nWarning message:\r\nEach row in `x` should match at most 1 row in `y`.\r\nℹ Row 1 of `x` matches multiple rows.\r\nℹ If multiple matches are expected, specify `multiple = \"all\"` in the join call to silence this warning. \r\n```\r\n\r\nMaybe it should be more like:\r\n\r\n```R\r\nWarning message:\r\nOutput is longer than input, because some rows in `x` match multiple rows in `y`.\r\nℹ Row 1 of `x` matches multiple rows.\r\nℹ If multiple matches are expected, specify `multiple = \"all\"` in the join call to silence this warning. \r\n```\r\n\r\n",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6445/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/6445/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6444",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6444/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6444/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6444/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6444",
#>     "id": 1358737695,
#>     "node_id": "PR_kwDOAGIUpc4-NJfW",
#>     "number": 6444,
#>     "title": "Drop `caller_env` from `DataMask`",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 2,
#>     "created_at": "2022-09-01T12:04:05Z",
#>     "updated_at": "2022-09-06T20:30:23Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": true,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6444",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6444",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6444.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6444.patch",
#>       "merged_at": {}
#>     },
#>     "body": "@romainfrancois @lionel- Does this look ok? As far as I can tell the only place this was used was when evaluating the glue spec for `across()`, and I'm pretty sure using the environment of the `across()` quosure is just as good (if not better).\r\n\r\n(This is in preparation for #6442)\r\n\r\nI still need to remove the other various argument that this makes redundant, but I wanted to double check that I wasn't missing anything obvious before I started on that.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6444/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/6444/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6443",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6443/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6443/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6443/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6443",
#>     "id": 1358608777,
#>     "node_id": "PR_kwDOAGIUpc4-Mtki",
#>     "number": 6443,
#>     "title": "Collect warnings and add `dplyr_last_warnings()`",
#>     "user": {
#>       "login": "lionel-",
#>       "id": 4465050,
#>       "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/lionel-",
#>       "html_url": "https://github.com/lionel-",
#>       "followers_url": "https://api.github.com/users/lionel-/followers",
#>       "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>       "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>       "repos_url": "https://api.github.com/users/lionel-/repos",
#>       "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 7,
#>     "created_at": "2022-09-01T10:23:00Z",
#>     "updated_at": "2022-09-08T09:35:40Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": false,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6443",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6443",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6443.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6443.patch",
#>       "merged_at": {}
#>     },
#>     "body": "Branched from #6438.\r\n\r\nFixes #6005\r\nFixes #6236\r\n\r\n* Warnings within mutate steps are now collected instead of being enriched right away.\r\n* The new function `dplyr_last_warnings()` returns enriched warnings, the first 20 by default.\r\n* Enriched warnings are now chained so as to keep a reference to the verb within which they were emitted.\r\n\r\n```r\r\nf <- function(x) {\r\n  warning(\"foo\")\r\n  x\r\n}\r\n\r\ndf <- tibble(id = 1:100)\r\n\r\ndf |>\r\n  rowwise() |>\r\n  mutate(x = f(1))\r\n#> # A tibble: 100 × 2\r\n#> # Rowwise:\r\n#>      id     x\r\n#>   <int> <dbl>\r\n#> 1     1     1\r\n#> 2     2     1\r\n#> 3     3     1\r\n#> 4     4     1\r\n#> # … with 96 more rows\r\n#> # ℹ Use `print(n = ...)` to see more rows\r\n#> Warning message:\r\n#> There were 100 warnings in `mutate()`.\r\n#> ℹ Run `dplyr::dplyr_last_warnings()` to see them.\r\n\r\ndplyr_last_warnings(3)\r\n#> [[1]]\r\n#> <warning/rlang_warning>\r\n#> Warning in `mutate()`:\r\n#> Problem in row 1 while computing `x = f(1)`.\r\n#> Caused by warning in `f()`:\r\n#> ! foo\r\n#>\r\n#> [[2]]\r\n#> <warning/rlang_warning>\r\n#> Warning in `mutate()`:\r\n#> Problem in row 2 while computing `x = f(1)`.\r\n#> Caused by warning in `f()`:\r\n#> ! foo\r\n#>\r\n#> [[3]]\r\n#> <warning/rlang_warning>\r\n#> Warning in `mutate()`:\r\n#> Problem in row 3 while computing `x = f(1)`.\r\n#> Caused by warning in `f()`:\r\n#> ! foo\r\n#>\r\n#> ... with 97 more warnings.\r\n#> ℹ Use `dplyr_last_warnings(n = ...)` to show more.\r\n```\r\n\r\nThe other way we could handle long lists of warnings is by detecting if there are more than 10 or 20. If that's the case, suggest to run `head(dplyr_last_warnings())`, otherwise just `dplyr_last_warnings()`. On hindsight I think that would make things simpler internally and for users.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6443/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/6443/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6442",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6442/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6442/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6442/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6442",
#>     "id": 1358110988,
#>     "node_id": "I_kwDOAGIUpc5Q8yEM",
#>     "number": 6442,
#>     "title": "`group_by_prepare` with default `error_call` argument results in error",
#>     "user": {
#>       "login": "eutwt",
#>       "id": 11261404,
#>       "node_id": "MDQ6VXNlcjExMjYxNDA0",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/11261404?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/eutwt",
#>       "html_url": "https://github.com/eutwt",
#>       "followers_url": "https://api.github.com/users/eutwt/followers",
#>       "following_url": "https://api.github.com/users/eutwt/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/eutwt/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/eutwt/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/eutwt/subscriptions",
#>       "organizations_url": "https://api.github.com/users/eutwt/orgs",
#>       "repos_url": "https://api.github.com/users/eutwt/repos",
#>       "events_url": "https://api.github.com/users/eutwt/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/eutwt/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2022-09-01T01:12:35Z",
#>     "updated_at": "2022-09-01T02:07:34Z",
#>     "closed_at": {},
#>     "author_association": "CONTRIBUTOR",
#>     "active_lock_reason": {},
#>     "body": "The default values for arguments `caller_env` and `error_call` in `group_by_prepare` don't seem to work\r\n\r\n`group_by_prepare` with default `error_call`\r\n``` r\r\ndf <- data.frame(x = 1)\r\ndplyr::group_by_prepare(df)\r\n#> Error in is_missing(call): promise already under evaluation: recursive default argument reference or earlier problems?\r\n```\r\n<sup>Created on 2022-08-31 with [reprex v2.0.2](https://reprex.tidyverse.org)<\/sup>\r\n\r\nwith `error_call` supplied but not `caller_env`, adding a column\r\n``` r\r\ndf <- data.frame(x = 1)\r\ndplyr::group_by_prepare(df, y = 3, error_call = call('fun'))\r\n#> Error in initialize(...): promise already under evaluation: recursive default argument reference or earlier problems?\r\n```\r\n<sup>Created on 2022-08-31 with [reprex v2.0.2](https://reprex.tidyverse.org)<\/sup>\r\n\r\nThe reason I noticed this is that `group_by_prepare(data.frame(x = 1))` works with CRAN dplyr but not dev dplyr, which causes `group_by` to fail in dtplyr if dev dplyr is installed.\r\n\r\nIt seems to be because `caller_env` is self-referencing in the function signature. I guess the users of this function would be package developers who can probably figure out what's going on and just supply the arguments, but it was a little confusing. Maybe these arguments could have no default to make the error more understandable (`argument \"caller_env\" is missing` rather than `promise already under evaluation`), or `caller_env` renamed to `.caller_env`.\r\n\r\nhttps://github.com/tidyverse/dplyr/blob/48431a541c16ad7f88bf2e2918013ae1dc82f480/R/group-by.r#L193-L199\r\n\r\n``` r\r\nfun <- function(caller_env = caller_env(2)) {\r\n  print(caller_env)\r\n}\r\nfun()\r\n#> Error in print(caller_env): promise already under evaluation: recursive default argument reference or earlier problems?\r\n```\r\n<sup>Created on 2022-08-31 with [reprex v2.0.2](https://reprex.tidyverse.org)<\/sup>",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6442/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/6442/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6439",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6439/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6439/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6439/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6439",
#>     "id": 1357526283,
#>     "node_id": "I_kwDOAGIUpc5Q6jUL",
#>     "number": 6439,
#>     "title": "Replace `preceding()` and `following()` with `closest()`",
#>     "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",
#>       "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": 1257707950,
#>         "node_id": "MDU6TGFiZWwxMjU3NzA3OTUw",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/tables%20%F0%9F%A7%AE",
#>         "name": "tables 🧮",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "joins and set operations"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {
#>       "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",
#>       "site_admin": false
#>     },
#>     "assignees": [
#>       {
#>         "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",
#>         "site_admin": false
#>       }
#>     ],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 0,
#>     "created_at": "2022-08-31T15:42:16Z",
#>     "updated_at": "2022-08-31T15:42:16Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "```r\r\npreceding(x, y, inclusive = TRUE)  -> closest(x >= y)\r\npreceding(x, y, inclusive = FALSE) -> closest(x > y)\r\nfollowing(x, y, inclusive = TRUE)  -> closest(x <= y)\r\nfollowing(x, y, inclusive = FALSE) -> closest(x < y)\r\n```\r\n\r\nThis should be more intuitive for interactive exploration too, because you probably start out with `x >= y`, then realize you only care about the closest match, so you just wrap it in `closest()` rather than having to switch to `preceding()`\r\n",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6439/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/6439/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6435",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6435/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6435/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6435/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6435",
#>     "id": 1355019193,
#>     "node_id": "I_kwDOAGIUpc5Qw_O5",
#>     "number": 6435,
#>     "title": "Add `merge` indicator after a join",
#>     "user": {
#>       "login": "nmarantz",
#>       "id": 25621920,
#>       "node_id": "MDQ6VXNlcjI1NjIxOTIw",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/25621920?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/nmarantz",
#>       "html_url": "https://github.com/nmarantz",
#>       "followers_url": "https://api.github.com/users/nmarantz/followers",
#>       "following_url": "https://api.github.com/users/nmarantz/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/nmarantz/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/nmarantz/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/nmarantz/subscriptions",
#>       "organizations_url": "https://api.github.com/users/nmarantz/orgs",
#>       "repos_url": "https://api.github.com/users/nmarantz/repos",
#>       "events_url": "https://api.github.com/users/nmarantz/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/nmarantz/received_events",
#>       "type": "User",
#>       "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": 1257707950,
#>         "node_id": "MDU6TGFiZWwxMjU3NzA3OTUw",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/tables%20%F0%9F%A7%AE",
#>         "name": "tables 🧮",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "joins and set operations"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 2,
#>     "created_at": "2022-08-30T00:37:58Z",
#>     "updated_at": "2022-08-30T19:38:07Z",
#>     "closed_at": {},
#>     "author_association": "NONE",
#>     "active_lock_reason": {},
#>     "body": "A prior iteration of this request was [closed and locked as old](https://github.com/tidyverse/dplyr/issues/2183), but the asserted rationale does not address the request. It would be very useful if the `dplyr` mutating join functions allowed for an option to create a variable indicating which observations were joined (or not) from each data frame. This is a feature available in Stata's `merge` command and in Pandas (`indicator = True`). It has been implemented in R through the `statar` package, but it would be great to have it included in the `dplyr` mutating join functions. \r\n\r\nThe purported rationale for closing the earlier iteration of this feature request was that `tidylog` has solved the problem. The `tidylog` package is great, but it doesn't add any variables to the merged data frame, which was the initial feature request. \r\n",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6435/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/6435/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6420",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6420/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6420/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6420/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6420",
#>     "id": 1343789904,
#>     "node_id": "PR_kwDOAGIUpc49bbQ_",
#>     "number": 6420,
#>     "title": "WIP: New .multi argument to summarize()",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2022-08-19T00:44:44Z",
#>     "updated_at": "2022-08-19T00:50:01Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": false,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6420",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6420",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6420.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6420.patch",
#>       "merged_at": {}
#>     },
#>     "body": "``` r\r\nlibrary(conflicted)\r\nlibrary(dplyr)\r\n\r\nmy_custom_summary_function <- function(n) {\r\n  # Should return a scalar, but I accidentally return a vector\r\n  rep(n, n)\r\n}\r\n\r\ntibble(n = 2:0) %>%\r\n  group_by(n) %>%\r\n  summarize(out = my_custom_summary_function(n), .groups = \"drop\", .multi = \"fail\")\r\n#> Error in `summarize()`:\r\n#> ! A summary function returned a vector of size != 1, use `.multi =\r\n#>   \"require\"` or `.multi = \"allow\"`.\r\n\r\ntibble(n = 2:0) %>%\r\n  group_by(n) %>%\r\n  summarize(out = my_custom_summary_function(n), .groups = \"drop\", .multi = \"require\")\r\n#> # A tibble: 3 × 2\r\n#>       n   out\r\n#>   <int> <int>\r\n#> 1     1     1\r\n#> 2     2     2\r\n#> 3     2     2\r\n\r\ntibble(n = 2:0) %>%\r\n  group_by(n) %>%\r\n  summarize(out = n, .groups = \"drop\", .multi = \"require\")\r\n#> Error in `summarize()`:\r\n#> ! All summary functions returned a vector of size one, use `.multi =\r\n#>   \"fail\"` or `.multi = \"allow\"`.\r\n```\r\n\r\n<sup>Created on 2022-08-19 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1)<\/sup>\r\n\r\nHappy to discuss argument name and values. The error message can be made much prettier, I'll also add tests.\r\n\r\nThere seems to be no mention of multi-row `summarize()` in the vignettes.\r\n\r\nCloses #6382.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6420/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/6420/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6404",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6404/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6404/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6404/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6404",
#>     "id": 1340834061,
#>     "node_id": "PR_kwDOAGIUpc49Rpkx",
#>     "number": 6404,
#>     "title": "Simpler approach to slice helpers",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2022-08-16T20:19:17Z",
#>     "updated_at": "2022-08-16T20:44:51Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": true,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6404",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6404",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6404.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6404.patch",
#>       "merged_at": {}
#>     },
#>     "body": {},
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6404/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/6404/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6388",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6388/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6388/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6388/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6388",
#>     "id": 1328915128,
#>     "node_id": "I_kwDOAGIUpc5PNaK4",
#>     "number": 6388,
#>     "title": "File/test tidyup",
#>     "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",
#>       "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"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 0,
#>     "created_at": "2022-08-04T16:43:36Z",
#>     "updated_at": "2022-08-04T22:10:34Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "Need to do after PRs mostly closed\r\n\r\n* Ensure all use `.R`\r\n* Ensure `tests/` and `R/` align",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6388/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/6388/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6386",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6386/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6386/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6386/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6386",
#>     "id": 1328649265,
#>     "node_id": "PR_kwDOAGIUpc48prUf",
#>     "number": 6386,
#>     "title": "Use vctrs validation in `slice()`",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2022-08-04T13:35:37Z",
#>     "updated_at": "2022-08-30T14:32:46Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": true,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6386",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6386",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6386.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6386.patch",
#>       "merged_at": {}
#>     },
#>     "body": "WIP for #5242",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6386/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/6386/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6382",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6382/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6382/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6382/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6382",
#>     "id": 1323888997,
#>     "node_id": "I_kwDOAGIUpc5O6PFl",
#>     "number": 6382,
#>     "title": "summarize() with multi-row returns",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 2,
#>     "created_at": "2022-08-01T06:20:29Z",
#>     "updated_at": "2022-08-26T17:31:07Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "As of dplyr 1.0.0, `summarize()` will create multiple rows per group, according to the length of the return value of the summary function. This new feature leads to unintended behavior if the vector return is accidental, and also can lead to data loss.\r\n\r\n``` r\r\nlibrary(conflicted)\r\nlibrary(dplyr)\r\n\r\nmy_custom_summary_function <- function(n) {\r\n  # Should return a scalar, but I accidentally return a vector\r\n  rep(n, n)\r\n}\r\n\r\ntibble(n = 2:0) %>% \r\n  group_by(n) %>% \r\n  summarize(out = my_custom_summary_function(n), .groups = \"drop\") %>% \r\n  ungroup()\r\n#> # A tibble: 3 × 2\r\n#>       n   out\r\n#>   <int> <int>\r\n#> 1     1     1\r\n#> 2     2     2\r\n#> 3     2     2\r\n```\r\n\r\n<sup>Created on 2022-08-01 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1)<\/sup>\r\n\r\nShould we introduce a `.multi = c(\"allow\", \"require\", \"fail\")` argument that supports the pre-1.0.0 strict mode of operation? Should `.multi = \"fail\"` even be the default?\r\n\r\n``` r\r\nlibrary(conflicted)\r\nlibrary(dplyr)\r\n\r\nmy_custom_summary_function <- function(n) {\r\n  # Should return a scalar, but I accidentally return a vector\r\n  rep(n, n)\r\n}\r\n\r\ntibble(n = 2:0) %>% \r\n  group_by(n) %>% \r\n  summarize(out = my_custom_summary_function(n), .groups = \"drop\", .multi = \"fail\") %>% \r\n  ungroup()\r\n## Error: `out` has length != 1 in groups 1, 3, use `.multi = \"allow\"` if this is intended\r\n```\r\n\r\n<sup>Imagined on 2022-08-01 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1)<\/sup>\r\n\r\n",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6382/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/6382/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": "reopened"
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6367",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6367/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6367/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6367/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6367",
#>     "id": 1318196661,
#>     "node_id": "PR_kwDOAGIUpc48HD_y",
#>     "number": 6367,
#>     "title": "Next round of database defunctions",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 3,
#>     "created_at": "2022-07-26T12:49:21Z",
#>     "updated_at": "2022-08-03T20:12:19Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": false,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6367",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6367",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6367.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6367.patch",
#>       "merged_at": {}
#>     },
#>     "body": "#4663",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6367/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/6367/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6313",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6313/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6313/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6313/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6313",
#>     "id": 1287609585,
#>     "node_id": "PR_kwDOAGIUpc46gqlO",
#>     "number": 6313,
#>     "title": "Implement `mutate(.when =)`",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 13,
#>     "created_at": "2022-06-28T16:33:28Z",
#>     "updated_at": "2022-07-15T19:32:09Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": true,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6313",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6313",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6313.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6313.patch",
#>       "merged_at": {}
#>     },
#>     "body": "Closes #4050 \r\nCloses #6304 \r\n\r\nThis is a fully tested implementation of `mutate(.when =)`. \r\n\r\n## Implementation details\r\n\r\nA few notes on how it works:\r\n\r\n- `.when` must evaluate to a logical vector the same size as `.data`. It isn't recycled.\r\n\r\n- Groups are ignored when computing `.when`. This might be a little controversial, but I think it makes the most sense:\r\n  - It matches how SQL's WHERE statement works when combined with GROUP BY. The WHERE is applied first and then the groups are computed on the remaining rows. This will be clearer if we have `mutate(df, .when =, .by =)`.\r\n  - You generally don't want `.when` to be evaluated per group (it rarely needs a per-group mean or something like that), but sometimes you want your expressions in `...` to still be evaluated per group after applying a global `.when`. You save _a lot_ of performance in this case by evaluating `.when` on the ungrouped data.\r\n  - If you really need per-group `.when`, you should just use `if_else()` instead, since expressions in the `...` are evaluated per group.\r\n\r\n- It is hooked into the data mask to be performant. Only columns that are referenced in `...` are sliced to the locations referred to by `.when`.\r\n\r\n- `.when` is mainly useful for _updating_ existing columns. Because of this, you can't modify the type of the columns you are updating. i.e. if `x` is an integer column then you can't do `mutate(df, x = x + 1.5, .when = y > 2)`.\r\n  - This type stability is an _extremely_ nice property. It makes it more valuable than `if_else()` for updates, because that takes the common type, i.e. `x = if_else(y > 2, x + 1.5, x)` would not be type stable on `x`.\r\n\r\n## Outstanding questions\r\n\r\n- Should `.when` allow `if_any()` and `if_all()`? It seems like they might be useful. Right now it requires `.when` to evaluate to a single logical vector. I don't think it should allow `across()` though.\r\n\r\n- Are we ok with this single condition interface? I am. We had a lot of discussion about alternative interfaces that might allow case-when style updates like `mutate(when(x < 2, x = NA, y = 3), when(x < 5, x = 99))`, but I think:\r\n  - That is overly complicated for the 99% case that this is likely to be used for (1 condition, >=1 columns to update)\r\n  - It introduces a clunky `when()` helper that wouldn't be used anywhere else\r\n  - It opens up a lot of hard to answer questions like: Can you mix `when()` and normal expressions in the same `mutate()` call? Do you have to recompute groups before each `when()`?\r\n  - Keeping it to 1 condition should allow us to nicely translate this to a SQL `UPDATE` statement for dbplyr, I think.\r\n\r\n## Outstanding actions\r\n\r\n- [ ] Export `vec_locate_runs()` from vctrs if we end up using it here in the final version of this PR\r\n\r\n## Examples\r\n\r\n``` r\r\nlibrary(dplyr)\r\n\r\n# From issue 4050\r\ndf <- tibble(a = 1:5)\r\nmutate(df, a = a + 1, .when = a > 3)\r\n#> # A tibble: 5 × 1\r\n#>       a\r\n#>   <int>\r\n#> 1     1\r\n#> 2     2\r\n#> 3     3\r\n#> 4     5\r\n#> 5     6\r\n\r\ndf <- tibble(x = 1:4, y = 5:8)\r\nmutate(df, x = -x, y = -y, .when = x < 4)\r\n#> # A tibble: 4 × 2\r\n#>       x     y\r\n#>   <int> <int>\r\n#> 1    -1    -5\r\n#> 2    -2    -6\r\n#> 3    -3    -7\r\n#> 4     4     8\r\n\r\n# More practical. Replace missing values.\r\ndf <- tibble(x = c(1, 2, NA, 4, NA))\r\nmutate(df, x = 0, .when = is.na(x))\r\n#> # A tibble: 5 × 1\r\n#>       x\r\n#>   <dbl>\r\n#> 1     1\r\n#> 2     2\r\n#> 3     0\r\n#> 4     4\r\n#> 5     0\r\n\r\n# Standardize missings across variables\r\ndf <- tibble(x = c(1, NA, 2, 4), y = c(1, 2, NA, 4), z = c(NA, \"b\", \"c\", \"d\"))\r\nmutate(df, x = NA, y = NA, z = NA, .when = is.na(x) | is.na(y) | is.na(z))\r\n#> # A tibble: 4 × 3\r\n#>       x     y z    \r\n#>   <dbl> <dbl> <chr>\r\n#> 1    NA    NA <NA> \r\n#> 2    NA    NA <NA> \r\n#> 3    NA    NA <NA> \r\n#> 4     4     4 d\r\n```\r\n\r\n## Performance\r\n\r\nI think performance is generally pretty good. My bar was mainly to be faster than what you could do with an `if_else()`. It is a lot more compact than an `if_else()` too.\r\n\r\n``` r\r\nlibrary(nycflights13)\r\nlibrary(vctrs)\r\nlibrary(dplyr)\r\n\r\nbig_flights <- vec_rep(flights, 100)\r\nbig_grouped_flights <- group_by(big_flights, year, month)\r\n\r\n# Small data, one condition, no groups\r\nbench::mark(\r\n  slow = mutate(\r\n    flights,\r\n    dep_delay = if_else(dep_time > 500, -dep_delay, dep_delay, missing = dep_delay)\r\n  ),\r\n  fast = mutate(\r\n    flights,\r\n    dep_delay = -dep_delay,\r\n    .when = dep_time > 500\r\n  ),\r\n  iterations = 5\r\n)\r\n#> # A tibble: 2 × 6\r\n#>   expression      min   median `itr/sec` mem_alloc `gc/sec`\r\n#>   <bch:expr> <bch:tm> <bch:tm>     <dbl> <bch:byt>    <dbl>\r\n#> 1 slow         25.3ms   25.5ms      39.0    41.7MB        0\r\n#> 2 fast         12.5ms   12.8ms      78.4    14.1MB        0\r\n\r\n# Small data, two conditions, no groups\r\nbench::mark(\r\n  slow = mutate(\r\n    flights,\r\n    dep_delay = if_else(dep_time > 500, -dep_delay, dep_delay, missing = dep_delay),\r\n    sched_dep_time = if_else(dep_time > 500, -sched_dep_time, sched_dep_time, missing = sched_dep_time)\r\n  ),\r\n  fast = mutate(\r\n    flights,\r\n    dep_delay = -dep_delay,\r\n    sched_dep_time = -sched_dep_time,\r\n    .when = dep_time > 500\r\n  ),\r\n  iterations = 5\r\n)\r\n#> # A tibble: 2 × 6\r\n#>   expression      min   median `itr/sec` mem_alloc `gc/sec`\r\n#>   <bch:expr> <bch:tm> <bch:tm>     <dbl> <bch:byt>    <dbl>\r\n#> 1 slow         25.7ms   36.2ms      27.9    72.1MB        0\r\n#> 2 fast         13.9ms     15ms      67.7    17.8MB        0\r\n\r\n# Big data, two conditions, no groups\r\nbench::mark(\r\n  slow = mutate(\r\n    big_flights,\r\n    dep_delay = if_else(dep_time > 500, -dep_delay, dep_delay, missing = dep_delay),\r\n    sched_dep_time = if_else(dep_time > 500, -sched_dep_time, sched_dep_time, missing = sched_dep_time)\r\n  ),\r\n  fast = mutate(\r\n    big_flights,\r\n    dep_delay = -dep_delay,\r\n    sched_dep_time = -sched_dep_time,\r\n    .when = dep_time > 500\r\n  ),\r\n  iterations = 5\r\n)\r\n#> Warning: Some expressions had a GC in every iteration; so filtering is disabled.\r\n#> # A tibble: 2 × 6\r\n#>   expression      min   median `itr/sec` mem_alloc `gc/sec`\r\n#>   <bch:expr> <bch:tm> <bch:tm>     <dbl> <bch:byt>    <dbl>\r\n#> 1 slow          2.54s    2.72s     0.363    7.04GB    1.31 \r\n#> 2 fast       806.87ms 972.97ms     1.01     1.73GB    0.805\r\n\r\n# Big data, two conditions, with groups\r\nbench::mark(\r\n  slow = mutate(\r\n    big_grouped_flights,\r\n    dep_delay = if_else(dep_time > 500, -dep_delay, dep_delay, missing = dep_delay),\r\n    sched_dep_time = if_else(dep_time > 500, -sched_dep_time, sched_dep_time, missing = sched_dep_time)\r\n  ),\r\n  fast = mutate(\r\n    big_grouped_flights,\r\n    dep_delay = -dep_delay,\r\n    sched_dep_time = -sched_dep_time,\r\n    .when = dep_time > 500\r\n  ),\r\n  iterations = 5\r\n)\r\n#> Warning: Some expressions had a GC in every iteration; so filtering is disabled.\r\n#> # A tibble: 2 × 6\r\n#>   expression      min   median `itr/sec` mem_alloc `gc/sec`\r\n#>   <bch:expr> <bch:tm> <bch:tm>     <dbl> <bch:byt>    <dbl>\r\n#> 1 slow             5s    5.45s     0.183    7.92GB    0.623\r\n#> 2 fast          2.33s    2.86s     0.339    3.71GB    0.679\r\n```",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6313/reactions",
#>       "total_count": 8,
#>       "+1": 5,
#>       "-1": 0,
#>       "laugh": 0,
#>       "hooray": 0,
#>       "confused": 0,
#>       "heart": 0,
#>       "rocket": 0,
#>       "eyes": 3
#>     },
#>     "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6313/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6262",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6262/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6262/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6262/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6262",
#>     "id": 1230134807,
#>     "node_id": "I_kwDOAGIUpc5JUl4X",
#>     "number": 6262,
#>     "title": "dplyr 1.1.0 revdep tracker",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 0,
#>     "created_at": "2022-05-09T19:10:08Z",
#>     "updated_at": "2022-08-02T15:44:05Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "## From join updates #5910\r\n- [ ] comperes: Produced warning in test\r\n- [ ] dodgr: Produced warnings in test\r\n- [ ] exuber: Produced warnings in test\r\n- [ ] lans2r: Produced warnings in test\r\n- [ ] MBNMAtime: Produced warnings in test\r\n- [ ] modeldb: Produced warnings in test\r\n- [ ] multicolor: Produced warnings in test\r\n- [ ] parsnip: Produced warnings in Rd file generation and examples\r\n- [x] sfnetworks: Error due to `sfc` not being orderable (tackling in vctrs) https://github.com/r-lib/vctrs/pull/1558\r\n- [ ] stars: Expected a different warning in test\r\n- [ ] Tplyr: Produced warnings in test\r\n\r\n## From between updates #6260 \r\n- [ ] brolgar: `between()` cast error in tests\r\n- [ ] cubble: `between()` cast error in vignette (double to character)\r\n- [ ] gmgm: `between()` cast error in tests (double to integer)\r\n- [ ] helda: `between()` cast error in examples\r\n- [ ] presenter: Unknown vignette failure\r\n- [ ] respR: `between()` cast error in examples (double to integer)\r\n\r\n## `arrange()` radix ordering #6263 \r\n- [x] dexter: Relied on `arrange()` and `group_by() %>% summarize()` having the same ordering https://github.com/dexter-psychometrics/dexter/pull/6\r\n\r\n## `data_frame_()` removal #6277 \r\n- [x] rabhit: Imported `data_frame_()` but never actually used it https://bitbucket.org/yaarilab/rabhit/issues/4/remove-data_frame_-import-from-dplyr \r\n\r\n## `dplyr::tbl_sum()` removal in favor of `pillar::tbl_sum()` #6284 \r\n- [x] groupr: https://github.com/ngriffiths21/groupr/pull/5 \r\n- [x] tabxplor https://github.com/BriceNocenti/tabxplor/pull/2\r\n\r\n## `case_when()` uses vctrs #6300\r\n- [ ] epocakir: Uses `case_when(~ ordered, TRUE ~ NA_integer_)`. Needs to use `GFR_stages[NA_integer_]` for default.\r\n- [ ] huxtable: Tries to use a mix of matrix and vector logicals on the LHS. Should probably un-dim, apply case-when, then re-dim.\r\n- [ ] unpivotr: Probably a case-when issue from the look of it. But not sure.\r\n\r\n## `if_else()` uses vctrs #6317\r\n- [ ] dm: `if_else(false = NULL)` when it should have used `list(NULL)` to fill in the list col\r\n- [ ] hablar: Likely a too strict test, something about this no longer erroring `if_else_(c(T, F, NA), 1, 1L)`\r\n- [ ] PVplr: Used `if_else(false = NULL)` when it should use `NA_character_`\r\n- [x] rsample: https://github.com/tidymodels/rsample/pull/341\r\n- [ ] seecolor: Trying to use a logical matrix in `if_else()`\r\n\r\n## `group_by()` with `vec_locate_sorted_groups()` #6297\r\n- None\r\n\r\n## `na_if()` vctrs update #6329\r\n- [ ] circumplex: Doing `dplyr::na_if(., \"NaN\")` on a double vector, I assume to replace `NaN` with `NA`?\r\n- [ ] forestmangr: Doing `dplyr::na_if(., 0)` where `.` is a tibble, I guess expecting each column to get na-if'd?\r\n- [ ] hlaR: Expecting a character `y` to be compatible with integer `x`\r\n- [ ] huito: \"`y` <character> to match type of `x` <data.frame>\" with `na_if()`, same as forestmangr?\r\n- [ ] itraxR: Looks like CRAN version had a problem that was fixed here in dev version. Related to `na_if()` on a data frame https://github.com/tombishop1/itraxR/commit/5de1717f60dffc134e20fed25344db0dacf37f91\r\n- [ ] JumpeR: Another \"Can't convert `y` <double> to match type of `x` <data.frame>\"\r\n- [ ] naniar: Another \"Can't convert `y` <double> to match type of `x` <tbl_df>\" in the `replace-with-na.Rmd` vignette\r\n- [ ] skater: Looks like calling `na_if(<chr>, 0)` in a vignette on column `dadid`\r\n- [ ] suddengains: Looks like `na_if(<dbl>, \"-Inf\")` which is weird because `-Inf == -Inf` does return `TRUE`\r\n- [ ] SwimmeR: Another: \"Can't convert `y` <character> to match type of `x` <data.frame>.\"\r\n\r\n## `nth()`, `first()`, `last()` vctrs update #6331\r\n- [ ] confoundr: \"Can't convert `default` <character> to match type of `x` <double>\", `first(x, default = \"NA\")` with double `x`\r\n- [ ] divseg: Does `dplyr::first(dplyr::cur_data())` expecting to get the first col of the data frame? Should use `pull()`.\r\n- [ ] finnts: `dplyr::filter(Date==max(Date)) %>% dplyr::last()` on a df where they should have used `pull(-1)`\r\n- [ ] FRK: Not sure, possibly related but hard to diagnose\r\n- [ ] janitor: `dplyr::last(dat)` on a data frame expecting last column, should use `pull()`\r\n- [ ] questionr: Broken because of janitor\r\n- [ ] tidygraph: `dplyr::count() %>% dplyr::first()` on a data frame, expecting first column, should use `pull()`\r\n\r\n## `lead()` and `lag()` update #6336 \r\n- [x] ferrn: typo https://github.com/huizezhang-sherry/ferrn/issues/8 \r\n- [ ] nonmemica: wrangle is causing this to break\r\n- [x] statar: typo https://github.com/matthieugomez/statar/issues/35\r\n- [ ] wrangle: \"Can't convert from `default` <double> to `x` <integer>\". Trying `lead(x, default = Inf)` with an integer `x`. Probably need to convert to double ahead of time if they really want this.\r\n\r\n## Database defunctions #6367 \r\nFixes here generally involve importing `dbplyr::sql()` rather than `dplyr::sql()` https://github.com/tidyverse/dplyr/pull/6367#issuecomment-1195841962. \r\n- [ ] bigrquery\r\n- [ ] childesr\r\n- [ ] ckanr\r\n- [ ] dm\r\n- [ ] etl\r\n- [ ] farr\r\n- [ ] funneljoin\r\n- [ ] geospark\r\n- [ ] RPresto\r\n\r\n## Misc\r\n- [x] headliner: https://github.com/r-lib/rlang/issues/1421\r\n\r\n\r\n---\r\n\r\n## Would be broken by `nth()`, `first()`, `last()` vctrs update if we made `first(list(1))` use `vec_slice()` #6331\r\n- [x] DataFakeR: `%>% tidygraph::pull(table) %>% dplyr::first()` on a list-col, expecting `first()` to give the first element\r\n- [x] dyngen: Through GillespieSSA2, does `str_split(\" \") %>% first()` expecting to get the first element of the list\r\n- [x] dynwrap: Programmatic usage of `first()` on a list, expecting to get the first element\r\n- [x] GillespieSSA2: does `str_split(\" \") %>% first()` expecting to get the first element of the list (see also dyngen)\r\n- [x] phenofit: `last()` on a list, expecting the last list element\r\n- [x] TidyMultiqc: `first()` on a list expecting to get the first element\r\n- [x] xpose: `first()` on a list expecting to get the first element\r\n\r\nMarked as complete because we decided not to break this. But tracking here anyways.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6262/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/6262/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6252",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6252/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6252/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6252/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6252",
#>     "id": 1221859613,
#>     "node_id": "PR_kwDOAGIUpc43HX3h",
#>     "number": 6252,
#>     "title": "POC: Set focus to new and used columns after mutate()",
#>     "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",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 7,
#>     "created_at": "2022-04-30T15:42:45Z",
#>     "updated_at": "2022-08-28T01:55:53Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": false,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6252",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6252",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6252.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6252.patch",
#>       "merged_at": {}
#>     },
#>     "body": "Needs https://github.com/r-lib/pillar/pull/549.\r\n\r\nIn the example below, `speed`, `air_time` and `distance` are shown because they played a role in the `mutate()` . Normally none of these columns are visible.\r\n\r\nThe focus columns are highlighted with an underline, this formatting can't be shown in a reprex.\r\n\r\n``` r\r\nlibrary(dplyr)\r\nnycflights13::flights %>%\r\n  mutate(speed = air_time / distance)\r\n#> # A tibble:      336,776 × 20\r\n#> # Focus columns: speed, air_time, distance\r\n#>     year month   day dep…¹ sch…² dep…³ arr…⁴ sch…⁵ arr…⁶ air_time distance speed\r\n#>    <int> <int> <int> <int> <int> <dbl> <int> <int> <dbl>    <dbl>    <dbl> <dbl>\r\n#>  1  2013     1     1   517   515     2   830   819    11      227     1400 0.162\r\n#>  2  2013     1     1   533   529     4   850   830    20      227     1416 0.160\r\n#>  3  2013     1     1   542   540     2   923   850    33      160     1089 0.147\r\n#>  4  2013     1     1   544   545    -1  1004  1022   -18      183     1576 0.116\r\n#>  5  2013     1     1   554   600    -6   812   837   -25      116      762 0.152\r\n#>  6  2013     1     1   554   558    -4   740   728    12      150      719 0.209\r\n#>  7  2013     1     1   555   600    -5   913   854    19      158     1065 0.148\r\n#>  8  2013     1     1   557   600    -3   709   723   -14       53      229 0.231\r\n#>  9  2013     1     1   557   600    -3   838   846    -8      140      944 0.148\r\n#> 10  2013     1     1   558   600    -2   753   745     8      138      733 0.188\r\n#> # … with 336,766 more rows, abbreviated variable names ¹​dep_time,\r\n#> #   ²​sched_dep_time, ³​dep_delay, ⁴​arr_time, ⁵​sched_arr_time, ⁶​arr_delay, and 8\r\n#> #   more variables: carrier <chr>, flight <int>, tailnum <chr>, origin <chr>,\r\n#> #   dest <chr>, hour <dbl>, minute <dbl>, time_hour <dttm>\r\n```\r\n\r\n<sup>Created on 2022-04-30 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1)<\/sup>",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6252/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/6252/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6236",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6236/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6236/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6236/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6236",
#>     "id": 1209539413,
#>     "node_id": "I_kwDOAGIUpc5IGBtV",
#>     "number": 6236,
#>     "title": "`rowwise()` with a mutate() call with warnings is very slow",
#>     "user": {
#>       "login": "charliejhadley",
#>       "id": 9363263,
#>       "node_id": "MDQ6VXNlcjkzNjMyNjM=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/9363263?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/charliejhadley",
#>       "html_url": "https://github.com/charliejhadley",
#>       "followers_url": "https://api.github.com/users/charliejhadley/followers",
#>       "following_url": "https://api.github.com/users/charliejhadley/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/charliejhadley/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/charliejhadley/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/charliejhadley/subscriptions",
#>       "organizations_url": "https://api.github.com/users/charliejhadley/orgs",
#>       "repos_url": "https://api.github.com/users/charliejhadley/repos",
#>       "events_url": "https://api.github.com/users/charliejhadley/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/charliejhadley/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "labels": [
#>       {
#>         "id": 529648245,
#>         "node_id": "MDU6TGFiZWw1Mjk2NDgyNDU=",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/performance%20:rocket:",
#>         "name": "performance :rocket:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       },
#>       {
#>         "id": 4039306011,
#>         "node_id": "LA_kwDOAGIUpc7wwusb",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/rlang%20:microscope:",
#>         "name": "rlang :microscope:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {
#>       "login": "lionel-",
#>       "id": 4465050,
#>       "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/lionel-",
#>       "html_url": "https://github.com/lionel-",
#>       "followers_url": "https://api.github.com/users/lionel-/followers",
#>       "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>       "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>       "repos_url": "https://api.github.com/users/lionel-/repos",
#>       "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "assignees": [
#>       {
#>         "login": "lionel-",
#>         "id": 4465050,
#>         "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/lionel-",
#>         "html_url": "https://github.com/lionel-",
#>         "followers_url": "https://api.github.com/users/lionel-/followers",
#>         "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>         "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>         "repos_url": "https://api.github.com/users/lionel-/repos",
#>         "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       }
#>     ],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 6,
#>     "created_at": "2022-04-20T11:14:51Z",
#>     "updated_at": "2022-08-22T14:42:07Z",
#>     "closed_at": {},
#>     "author_association": "CONTRIBUTOR",
#>     "active_lock_reason": {},
#>     "body": "As identified by @debruine here https://github.com/tidyverse/dplyr/issues/6236#issuecomment-1103972470 this issue is actually caused when mutate() is used after rowwise() and generates warnings.\r\n\r\nThis code takes ~11 seconds to run in a clean R session\r\n\r\n```r\r\nlibrary(dplyr)\r\nlibrary(tictoc)\r\ntic()\r\nfoo <- tibble(\r\n  id = 1:800\r\n) %>% \r\n  rowwise() %>% \r\n  mutate(group_b_mean = mean(NULL))\r\ntoc()\r\n# 11.584 sec elapsed\r\n```\r\n\r\nPlease note that weirdly the same code takes <1second when run with the {reprex} addin.\r\n\r\nMany thanks to debruine for figuring this out.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6236/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/6236/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6214",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6214/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6214/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6214/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6214",
#>     "id": 1171140480,
#>     "node_id": "I_kwDOAGIUpc5Fzi-A",
#>     "number": 6214,
#>     "title": "`.by` argument as alternative to `group_by`",
#>     "user": {
#>       "login": "markfairbanks",
#>       "id": 28766000,
#>       "node_id": "MDQ6VXNlcjI4NzY2MDAw",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/28766000?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/markfairbanks",
#>       "html_url": "https://github.com/markfairbanks",
#>       "followers_url": "https://api.github.com/users/markfairbanks/followers",
#>       "following_url": "https://api.github.com/users/markfairbanks/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/markfairbanks/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/markfairbanks/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/markfairbanks/subscriptions",
#>       "organizations_url": "https://api.github.com/users/markfairbanks/orgs",
#>       "repos_url": "https://api.github.com/users/markfairbanks/repos",
#>       "events_url": "https://api.github.com/users/markfairbanks/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/markfairbanks/received_events",
#>       "type": "User",
#>       "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": 1728164976,
#>         "node_id": "MDU6TGFiZWwxNzI4MTY0OTc2",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/grouping%20:family_man_woman_girl_boy:",
#>         "name": "grouping :family_man_woman_girl_boy:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 19,
#>     "created_at": "2022-03-16T14:57:52Z",
#>     "updated_at": "2022-08-01T14:14:21Z",
#>     "closed_at": {},
#>     "author_association": "CONTRIBUTOR",
#>     "active_lock_reason": {},
#>     "body": "_Edit:_ Updated to reflect @DavisVaughan's suggestion [here](https://github.com/tidyverse/dplyr/issues/6214#issuecomment-1073887193).\r\n\r\nAny thoughts on implementing a `.by` arg so that functions can operate by group without returning a `grouped_df`?\r\n\r\nBasically this:\r\n\r\n```r\r\ndf <- tibble(x = 1:3, y = c(\"a\", \"a\", \"b\"))\r\n\r\ndf %>%\r\n  mutate(pct = x/sum(x), .by = y)\r\n```\r\n\r\nwould be equivalent to this:\r\n\r\n```r\r\ndf %>%\r\n  group_by(y) %>%\r\n  mutate(pct = x/sum(x)) %>%\r\n  ungroup()\r\n```",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6214/reactions",
#>       "total_count": 4,
#>       "+1": 4,
#>       "-1": 0,
#>       "laugh": 0,
#>       "hooray": 0,
#>       "confused": 0,
#>       "heart": 0,
#>       "rocket": 0,
#>       "eyes": 0
#>     },
#>     "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6214/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6204",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6204/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6204/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6204/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6204",
#>     "id": 1158379609,
#>     "node_id": "I_kwDOAGIUpc5FC3hZ",
#>     "number": 6204,
#>     "title": "Dedicated function for selecting from current data",
#>     "user": {
#>       "login": "mikkmart",
#>       "id": 57088219,
#>       "node_id": "MDQ6VXNlcjU3MDg4MjE5",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/57088219?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/mikkmart",
#>       "html_url": "https://github.com/mikkmart",
#>       "followers_url": "https://api.github.com/users/mikkmart/followers",
#>       "following_url": "https://api.github.com/users/mikkmart/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/mikkmart/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/mikkmart/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/mikkmart/subscriptions",
#>       "organizations_url": "https://api.github.com/users/mikkmart/orgs",
#>       "repos_url": "https://api.github.com/users/mikkmart/repos",
#>       "events_url": "https://api.github.com/users/mikkmart/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/mikkmart/received_events",
#>       "type": "User",
#>       "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": 1880639897,
#>         "node_id": "MDU6TGFiZWwxODgwNjM5ODk3",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/each-col%20%E2%86%94%EF%B8%8F",
#>         "name": "each-col ↔️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {
#>       "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",
#>       "site_admin": false
#>     },
#>     "assignees": [
#>       {
#>         "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",
#>         "site_admin": false
#>       }
#>     ],
#>     "milestone": {},
#>     "comments": 3,
#>     "created_at": "2022-03-03T12:58:41Z",
#>     "updated_at": "2022-08-22T15:52:58Z",
#>     "closed_at": {},
#>     "author_association": "NONE",
#>     "active_lock_reason": {},
#>     "body": "Would it be useful to have a dedicated function (say, `pick()`) to select columns from the current data? Currently, `across()` with only a `.cols` argument serves this role.\r\n\r\nI would see a dedicated function having at least three advantages:\r\n\r\n1.  Nicer syntax for union selections: `pick(1, last_col())` vs. `across(c(1, last_col()))`.\r\n2.  Better semantics. `across()` makes sense when there’s functions to apply, but less so when it’s used just for selecting columns. `pick()` seems intuitive for only selecting columns.\r\n3.  Reuse existing patterns: `across(c(1:2, 4), mean)` vs. `map_df(pick(1:2, 4), mean)`. The first requires you to know that `across()` can select columns *and* apply a function, latter can re-use existing function application methods.\r\n\r\nThe last point is particularly important if/when `...` is deprecated in `across()` (\\#6073), as funtionality would not be identical anymore. For example:\r\n\r\n``` r\r\n# With no ..., need to use an anonymous function for na.rm\r\nacross(c(1, 3:4), ~ mean(., na.rm = TRUE))\r\n\r\n# Could be avoided with `pick()`\r\nmap_df(pick(1, 3:4), mean, na.rm = TRUE)\r\n```\r\n\r\nI would see the primary uses for this as:\r\n\r\n1.  Replace `across()` in e.g. `group_by()` selections `group_by(across(c(1, 3:5)))` vs. `group_by(pick(1, 3:5))`. Big semantic and syntactic win, IMO.\r\n2.  Passing arguments to functions that take data frame or matrix arguments. For example common questions about taking means or sums over rows in data frames. In my experience people don’t think to `apply(across(1:5), 1, f)`, but `apply(pick(1:5), 1, f)` might be more intuitive.\r\n\r\nI could think of two ways to implement this as a wrapper:\r\n\r\n``` r\r\npick <- function(...) {\r\n  across(.cols = c(...))\r\n}\r\n```\r\n\r\nOr:\r\n\r\n``` r\r\npick <- function(...) {\r\n  select(cur_data(), ...)\r\n}\r\n```\r\n\r\nAlthough, particularly with the `across()` route, it would seem nicer to reverse the dependency and extract the relevant parts from `across()` into`pick()` instead.\r\n\r\nI appreciate your consideration for this feature request.\r\n",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6204/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/6204/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6170",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6170/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6170/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6170/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6170",
#>     "id": 1120424206,
#>     "node_id": "I_kwDOAGIUpc5CyFEO",
#>     "number": 6170,
#>     "title": "`dplyr::group_by_prepare()` does not work with lazy tables and `across()`",
#>     "user": {
#>       "login": "mgirlich",
#>       "id": 18258854,
#>       "node_id": "MDQ6VXNlcjE4MjU4ODU0",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/18258854?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/mgirlich",
#>       "html_url": "https://github.com/mgirlich",
#>       "followers_url": "https://api.github.com/users/mgirlich/followers",
#>       "following_url": "https://api.github.com/users/mgirlich/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/mgirlich/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/mgirlich/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/mgirlich/subscriptions",
#>       "organizations_url": "https://api.github.com/users/mgirlich/orgs",
#>       "repos_url": "https://api.github.com/users/mgirlich/repos",
#>       "events_url": "https://api.github.com/users/mgirlich/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/mgirlich/received_events",
#>       "type": "User",
#>       "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"
#>       },
#>       {
#>         "id": 1728164976,
#>         "node_id": "MDU6TGFiZWwxNzI4MTY0OTc2",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/grouping%20:family_man_woman_girl_boy:",
#>         "name": "grouping :family_man_woman_girl_boy:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 2,
#>     "created_at": "2022-02-01T09:29:04Z",
#>     "updated_at": "2022-08-01T14:27:16Z",
#>     "closed_at": {},
#>     "author_association": "NONE",
#>     "active_lock_reason": {},
#>     "body": "``` r\r\nlibrary(dplyr, warn.conflicts = FALSE)\r\nlibrary(rlang)\r\ndf <- mtcars\r\ndt <- dtplyr::lazy_dt(mtcars)\r\n\r\ngroup_by_prepare(df, mpg, .add = FALSE, caller_env = caller_env())\r\n#> $data\r\n#>                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb\r\n#> Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4\r\n#> Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4\r\n#> Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1\r\n#> Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1\r\n#> Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2\r\n#> Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1\r\n#> Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4\r\n#> Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2\r\n#> Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2\r\n#> Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4\r\n#> Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4\r\n#> Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3\r\n#> Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3\r\n#> Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3\r\n#> Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4\r\n#> Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4\r\n#> Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4\r\n#> Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1\r\n#> Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2\r\n#> Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1\r\n#> Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1\r\n#> Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2\r\n#> AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2\r\n#> Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4\r\n#> Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2\r\n#> Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1\r\n#> Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2\r\n#> Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2\r\n#> Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4\r\n#> Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6\r\n#> Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8\r\n#> Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2\r\n#> \r\n#> $groups\r\n#> $groups[[1]]\r\n#> mpg\r\n#> \r\n#> \r\n#> $group_names\r\n#> [1] \"mpg\"\r\ngroup_by_prepare(dt, mpg, .add = FALSE, caller_env = caller_env())\r\n#> $data\r\n#> Source: local data table [32 x 11]\r\n#> Call:   `_DT1`\r\n#> \r\n#>     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb\r\n#>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>\r\n#> 1  21       6   160   110  3.9   2.62  16.5     0     1     4     4\r\n#> 2  21       6   160   110  3.9   2.88  17.0     0     1     4     4\r\n#> 3  22.8     4   108    93  3.85  2.32  18.6     1     1     4     1\r\n#> 4  21.4     6   258   110  3.08  3.22  19.4     1     0     3     1\r\n#> 5  18.7     8   360   175  3.15  3.44  17.0     0     0     3     2\r\n#> 6  18.1     6   225   105  2.76  3.46  20.2     1     0     3     1\r\n#> # … with 26 more rows\r\n#> \r\n#> # Use as.data.table()/as.data.frame()/as_tibble() to access results\r\n#> \r\n#> $groups\r\n#> $groups[[1]]\r\n#> mpg\r\n#> \r\n#> \r\n#> $group_names\r\n#> [1] \"mpg\"\r\n\r\ngroup_by_prepare(df, across(mpg), .add = FALSE, caller_env = caller_env())\r\n#> $data\r\n#>                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb\r\n#> Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4\r\n#> Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4\r\n#> Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1\r\n#> Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1\r\n#> Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2\r\n#> Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1\r\n#> Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4\r\n#> Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2\r\n#> Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2\r\n#> Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4\r\n#> Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4\r\n#> Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3\r\n#> Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3\r\n#> Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3\r\n#> Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4\r\n#> Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4\r\n#> Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4\r\n#> Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1\r\n#> Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2\r\n#> Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1\r\n#> Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1\r\n#> Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2\r\n#> AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2\r\n#> Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4\r\n#> Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2\r\n#> Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1\r\n#> Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2\r\n#> Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2\r\n#> Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4\r\n#> Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6\r\n#> Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8\r\n#> Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2\r\n#> \r\n#> $groups\r\n#> $groups[[1]]\r\n#> mpg\r\n#> \r\n#> \r\n#> $group_names\r\n#> [1] \"mpg\"\r\ngroup_by_prepare(dt, across(mpg), .add = FALSE, caller_env = caller_env())\r\n#> Error in `group_by_prepare()`:\r\n#> ! Must group by variables found in `.data`.\r\n#> • Column `across(mpg)` is not found.\r\n```\r\n\r\n<sup>Created on 2022-02-01 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1)<\/sup>\r\n\r\nThe issue is the [line](https://github.com/tidyverse/dplyr/blob/6d22c0f0e1b0d945f2fff28cecb71d9cd548098b/R/group-by.r#L228)\r\n\r\n```r\r\ncol_names <- names(exprs_auto_name(vars))\r\n```",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6170/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/6170/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6102",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6102/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6102/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6102/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/pull/6102",
#>     "id": 1065950378,
#>     "node_id": "PR_kwDOAGIUpc4vH6KB",
#>     "number": 6102,
#>     "title": "`mutate()` preserves attributes of grouped data frames",
#>     "user": {
#>       "login": "romainfrancois",
#>       "id": 2625526,
#>       "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/romainfrancois",
#>       "html_url": "https://github.com/romainfrancois",
#>       "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>       "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>       "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>       "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>       "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "labels": [],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 5,
#>     "created_at": "2021-11-29T11:57:32Z",
#>     "updated_at": "2021-12-15T08:26:47Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "draft": false,
#>     "pull_request": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/6102",
#>       "html_url": "https://github.com/tidyverse/dplyr/pull/6102",
#>       "diff_url": "https://github.com/tidyverse/dplyr/pull/6102.diff",
#>       "patch_url": "https://github.com/tidyverse/dplyr/pull/6102.patch",
#>       "merged_at": {}
#>     },
#>     "body": "closes #6100 \r\n\r\n``` r\r\nlibrary(dplyr, warn.conflicts = FALSE)\r\n\r\nlibrary(purrr)\r\nattr(mtcars, \"test\") <- \"foo\"\r\nmtcars_grouped <- group_by(mtcars, cyl)\r\n\r\nmtcars %>% \r\n  mutate(new_col = 1) %>% \r\n  attr(\"test\")\r\n#> [1] \"foo\"\r\n\r\nmtcars_grouped %>% \r\n  mutate(new_col = 1) %>% \r\n  attr(\"test\")\r\n#> [1] \"foo\"\r\n```\r\n\r\n<sup>Created on 2021-11-29 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1.9000)<\/sup>",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6102/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/6102/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6100",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6100/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6100/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6100/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6100",
#>     "id": 1065634441,
#>     "node_id": "I_kwDOAGIUpc4_hEqJ",
#>     "number": 6100,
#>     "title": "data.frame attributes are preserved on `mutate()` but dropped on `group_by |> mutate`",
#>     "user": {
#>       "login": "MilesMcBain",
#>       "id": 9996346,
#>       "node_id": "MDQ6VXNlcjk5OTYzNDY=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/9996346?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/MilesMcBain",
#>       "html_url": "https://github.com/MilesMcBain",
#>       "followers_url": "https://api.github.com/users/MilesMcBain/followers",
#>       "following_url": "https://api.github.com/users/MilesMcBain/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/MilesMcBain/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/MilesMcBain/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/MilesMcBain/subscriptions",
#>       "organizations_url": "https://api.github.com/users/MilesMcBain/orgs",
#>       "repos_url": "https://api.github.com/users/MilesMcBain/repos",
#>       "events_url": "https://api.github.com/users/MilesMcBain/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/MilesMcBain/received_events",
#>       "type": "User",
#>       "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"
#>       },
#>       {
#>         "id": 3407327207,
#>         "node_id": "LA_kwDOAGIUpc7LF6_n",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/rows%20%E2%86%95%EF%B8%8F",
#>         "name": "rows ↕️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "Operations on rows: filter(), slice(), arrange()"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 2,
#>     "created_at": "2021-11-29T05:43:44Z",
#>     "updated_at": "2022-07-22T18:34:39Z",
#>     "closed_at": {},
#>     "author_association": "NONE",
#>     "active_lock_reason": {},
#>     "body": "Reprex:\r\n``` r\r\nlibrary(dplyr)\r\n#>\r\n#> Attaching package: 'dplyr'\r\n#> The following objects are masked from 'package:stats':\r\n#>\r\n#>     filter, lag\r\n#> The following objects are masked from 'package:base':\r\n#>\r\n#>     intersect, setdiff, setequal, union\r\nlibrary(purrr)\r\nattr(mtcars, \"test\") <- \"foo\"\r\nmtcars_grouped <- group_by(mtcars, cyl)\r\n\r\nmtcars |>\r\n  mutate(new_col = 1) |>\r\n  attributes() |>\r\n  pluck(\"test\")\r\n#> [1] \"foo\"\r\n\r\nmtcars_grouped |>\r\n  mutate(new_col = 1) |>\r\n  attributes() |>\r\n  pluck(\"test\")\r\n#> NULL\r\n\r\nmtcars_grouped |>\r\n  mutate(across(where(is.complex), as.character)) |>\r\n  attributes() |>\r\n  pluck(\"test\")\r\n#> NULL\r\n# did nothing but still lost attrs on the base data.frame\r\n```\r\n\r\nIt would be better if no attributes were lost with mutate. Feels weird in the last case where no mutate actually gets done.\r\n\r\nHowever if `group_by() |> mutate()` must drop attributes, it's probably better that `mutate` does also. You can easily get tricked into thinking some code is going to work, but then it bombs when it accidentally gets passed some sticky groups. This happened to me today, 4 levels of package context up from where the mutate was. \r\n",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6100/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/6100/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6091",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6091/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6091/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6091/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6091",
#>     "id": 1056418250,
#>     "node_id": "I_kwDOAGIUpc4-96nK",
#>     "number": 6091,
#>     "title": "Deprecate support for filter(, <matrix with 1 column>)",
#>     "user": {
#>       "login": "romainfrancois",
#>       "id": 2625526,
#>       "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/romainfrancois",
#>       "html_url": "https://github.com/romainfrancois",
#>       "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>       "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>       "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>       "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>       "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>       "type": "User",
#>       "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": 3407327207,
#>         "node_id": "LA_kwDOAGIUpc7LF6_n",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/rows%20%E2%86%95%EF%B8%8F",
#>         "name": "rows ↕️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "Operations on rows: filter(), slice(), arrange()"
#>       },
#>       {
#>         "id": 4349991067,
#>         "node_id": "LA_kwDOAGIUpc8AAAABA0eYmw",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/lifecycle%20:butterfly:",
#>         "name": "lifecycle :butterfly:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {
#>       "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",
#>       "site_admin": false
#>     },
#>     "assignees": [
#>       {
#>         "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",
#>         "site_admin": false
#>       }
#>     ],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 2,
#>     "created_at": "2021-11-17T17:47:43Z",
#>     "updated_at": "2022-08-22T14:12:49Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "in https://github.com/tidyverse/dplyr/pull/6083 we've let `filter()` handle matrices of 1 column for the time being. At some point this should warn, and then error. \r\n\r\nPackages currently concerned: \r\n - egor: https://github.com/tilltnet/egor/issues/76\r\n - ggcharts: https://github.com/thomas-neitmann/ggcharts/pull/100\r\n - janitor: https://github.com/sfirke/janitor/pull/463\r\n - Momocs: https://github.com/MomX/Momocs/pull/222\r\n - MRFcov: https://github.com/nicholasjclark/MRFcov/pull/32\r\n - multifear:  https://github.com/AngelosPsy/multifear/pull/10\r\n - psfmi: https://github.com/mwheymans/psfmi/pull/5\r\n - psycModel: https://github.com/jasonmoy28/psycModel/pull/8\r\n - tangram.pipe\r\n - TeachHist\r\n - validata\r\n - xpose",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6091/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/6091/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6022",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6022/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6022/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6022/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6022",
#>     "id": 999263375,
#>     "node_id": "I_kwDOAGIUpc47j4yP",
#>     "number": 6022,
#>     "title": "Add argument `na_matches = c(\"na\", \"never\")` to `rows_*()` functions",
#>     "user": {
#>       "login": "mgirlich",
#>       "id": 18258854,
#>       "node_id": "MDQ6VXNlcjE4MjU4ODU0",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/18258854?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/mgirlich",
#>       "html_url": "https://github.com/mgirlich",
#>       "followers_url": "https://api.github.com/users/mgirlich/followers",
#>       "following_url": "https://api.github.com/users/mgirlich/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/mgirlich/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/mgirlich/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/mgirlich/subscriptions",
#>       "organizations_url": "https://api.github.com/users/mgirlich/orgs",
#>       "repos_url": "https://api.github.com/users/mgirlich/repos",
#>       "events_url": "https://api.github.com/users/mgirlich/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/mgirlich/received_events",
#>       "type": "User",
#>       "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": 1257707950,
#>         "node_id": "MDU6TGFiZWwxMjU3NzA3OTUw",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/tables%20%F0%9F%A7%AE",
#>         "name": "tables 🧮",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "joins and set operations"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 0,
#>     "created_at": "2021-09-17T11:47:42Z",
#>     "updated_at": "2022-04-16T13:34:34Z",
#>     "closed_at": {},
#>     "author_association": "NONE",
#>     "active_lock_reason": {},
#>     "body": "Like the `*_join()` functions the `rows_*()` functions should get an argument `na_matches = c(\"na\", \"never\")`.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6022/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/6022/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6005",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6005/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6005/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/6005/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/6005",
#>     "id": 990144956,
#>     "node_id": "MDU6SXNzdWU5OTAxNDQ5NTY=",
#>     "number": 6005,
#>     "title": "Unenhanced warnings are emitted from `mutate()` when run in a `reprex()`",
#>     "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",
#>       "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": 3407329987,
#>         "node_id": "LA_kwDOAGIUpc7LF7rD",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/columns%20%E2%86%94%EF%B8%8F",
#>         "name": "columns ↔️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "Operations on columns: mutate(), select(),  rename(), relocate()"
#>       },
#>       {
#>         "id": 4039306011,
#>         "node_id": "LA_kwDOAGIUpc7wwusb",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/rlang%20:microscope:",
#>         "name": "rlang :microscope:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {
#>       "login": "lionel-",
#>       "id": 4465050,
#>       "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/lionel-",
#>       "html_url": "https://github.com/lionel-",
#>       "followers_url": "https://api.github.com/users/lionel-/followers",
#>       "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>       "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>       "repos_url": "https://api.github.com/users/lionel-/repos",
#>       "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>       "type": "User",
#>       "site_admin": false
#>     },
#>     "assignees": [
#>       {
#>         "login": "lionel-",
#>         "id": 4465050,
#>         "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/lionel-",
#>         "html_url": "https://github.com/lionel-",
#>         "followers_url": "https://api.github.com/users/lionel-/followers",
#>         "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>         "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>         "repos_url": "https://api.github.com/users/lionel-/repos",
#>         "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       }
#>     ],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 4,
#>     "created_at": "2021-09-07T16:14:59Z",
#>     "updated_at": "2022-08-18T16:23:00Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "When run with `reprex::reprex()`:\r\n\r\n``` r\r\nlibrary(dplyr)\r\n\r\nfoo <- function() {\r\n  warning(\"foo\")\r\n  NA\r\n}\r\n\r\ndf <- tibble(x = 1)\r\n\r\ndf <- mutate(df, x = foo())\r\n#> Warning in foo(): foo\r\n```\r\n\r\nvs when run interactively:\r\n\r\n```r\r\ndf <- mutate(df, x = foo())\r\n#> Warning message:\r\n#> Problem with `mutate()` column `x`.\r\n#> ℹ `x = foo()`.\r\n#> ℹ foo \r\n```\r\n\r\nI think this is related to the changes from https://github.com/tidyverse/dplyr/pull/5686, in particular it is about the `maybe_restart()` bit here that occurs when the warning is muffled\r\n\r\nhttps://github.com/tidyverse/dplyr/blob/87d1cecd7285f935ee3a202af0f74b9c1a640f7d/R/mutate.R#L427-L446\r\n\r\nI guess in the stack of `reprex()`, someone is muffling the warnings as it captures them to be able to print them out later on?\r\n\r\nSince it was slow to throw the enhanced warnings, maybe this is the best we can do, but it wasn't mentioned in #5686 as a potential issue so I figured I'd bring it up in case @lionel- has any thoughts here",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/6005/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/6005/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5573",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5573/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5573/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5573/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/5573",
#>     "id": 729734643,
#>     "node_id": "MDU6SXNzdWU3Mjk3MzQ2NDM=",
#>     "number": 5573,
#>     "title": "Remove lazy eval fallbacks",
#>     "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",
#>       "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": 4349991067,
#>         "node_id": "LA_kwDOAGIUpc8AAAABA0eYmw",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/lifecycle%20:butterfly:",
#>         "name": "lifecycle :butterfly:",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 5,
#>     "created_at": "2020-10-26T16:51:26Z",
#>     "updated_at": "2022-08-04T22:09:28Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "They shouldn't be needed anymore, and they make the error messages unnecessarily confusing. (Have been deprecated since 0.7.0 released June 2017)",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5573/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/5573/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5290",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5290/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5290/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5290/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/5290",
#>     "id": 628630066,
#>     "node_id": "MDU6SXNzdWU2Mjg2MzAwNjY=",
#>     "number": 5290,
#>     "title": "Add dplyr_sticky_cols() or similar",
#>     "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",
#>       "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": 3407329987,
#>         "node_id": "LA_kwDOAGIUpc7LF7rD",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/columns%20%E2%86%94%EF%B8%8F",
#>         "name": "columns ↔️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "Operations on columns: mutate(), select(),  rename(), relocate()"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {},
#>     "comments": 2,
#>     "created_at": "2020-06-01T18:12:50Z",
#>     "updated_at": "2022-08-18T23:43:14Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "So that when you implement a tibble subclass with sticky columns, you don't need to add a new `select()` method.  Likely to involve renaming `ensure_group_vars()`",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5290/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/5290/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5272",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5272/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5272/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5272/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/5272",
#>     "id": 624662278,
#>     "node_id": "MDU6SXNzdWU2MjQ2NjIyNzg=",
#>     "number": 5272,
#>     "title": "`dplyr_col_modify()` and recycling",
#>     "user": {
#>       "login": "lionel-",
#>       "id": 4465050,
#>       "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/lionel-",
#>       "html_url": "https://github.com/lionel-",
#>       "followers_url": "https://api.github.com/users/lionel-/followers",
#>       "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>       "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>       "repos_url": "https://api.github.com/users/lionel-/repos",
#>       "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>       "type": "User",
#>       "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": 544019342,
#>         "node_id": "MDU6TGFiZWw1NDQwMTkzNDI=",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/vctrs%20%E2%86%97%EF%B8%8F",
#>         "name": "vctrs ↗️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 7,
#>     "created_at": "2020-05-26T07:32:15Z",
#>     "updated_at": "2022-08-01T13:17:01Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "I think this call should be in the generic before dispatch, rather than in the `data.frame` method:\r\n\r\n```r\r\n  cols <- vec_recycle_common(!!!cols, .size = nrow(data))\r\n```\r\n\r\nToo late for 1.0 but worth considering for 1.1.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5272/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/5272/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   },
#>   {
#>     "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5242",
#>     "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#>     "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5242/labels{/name}",
#>     "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5242/comments",
#>     "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/5242/events",
#>     "html_url": "https://github.com/tidyverse/dplyr/issues/5242",
#>     "id": 617578055,
#>     "node_id": "MDU6SXNzdWU2MTc1NzgwNTU=",
#>     "number": 5242,
#>     "title": "`slice()` should validate inputs with `vec_as_location()`",
#>     "user": {
#>       "login": "lionel-",
#>       "id": 4465050,
#>       "node_id": "MDQ6VXNlcjQ0NjUwNTA=",
#>       "avatar_url": "https://avatars.githubusercontent.com/u/4465050?v=4",
#>       "gravatar_id": "",
#>       "url": "https://api.github.com/users/lionel-",
#>       "html_url": "https://github.com/lionel-",
#>       "followers_url": "https://api.github.com/users/lionel-/followers",
#>       "following_url": "https://api.github.com/users/lionel-/following{/other_user}",
#>       "gists_url": "https://api.github.com/users/lionel-/gists{/gist_id}",
#>       "starred_url": "https://api.github.com/users/lionel-/starred{/owner}{/repo}",
#>       "subscriptions_url": "https://api.github.com/users/lionel-/subscriptions",
#>       "organizations_url": "https://api.github.com/users/lionel-/orgs",
#>       "repos_url": "https://api.github.com/users/lionel-/repos",
#>       "events_url": "https://api.github.com/users/lionel-/events{/privacy}",
#>       "received_events_url": "https://api.github.com/users/lionel-/received_events",
#>       "type": "User",
#>       "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": 544019342,
#>         "node_id": "MDU6TGFiZWw1NDQwMTkzNDI=",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/vctrs%20%E2%86%97%EF%B8%8F",
#>         "name": "vctrs ↗️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": ""
#>       },
#>       {
#>         "id": 3407327207,
#>         "node_id": "LA_kwDOAGIUpc7LF6_n",
#>         "url": "https://api.github.com/repos/tidyverse/dplyr/labels/rows%20%E2%86%95%EF%B8%8F",
#>         "name": "rows ↕️",
#>         "color": "eeeeee",
#>         "default": false,
#>         "description": "Operations on rows: filter(), slice(), arrange()"
#>       }
#>     ],
#>     "state": "open",
#>     "locked": false,
#>     "assignee": {},
#>     "assignees": [],
#>     "milestone": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22",
#>       "html_url": "https://github.com/tidyverse/dplyr/milestone/22",
#>       "labels_url": "https://api.github.com/repos/tidyverse/dplyr/milestones/22/labels",
#>       "id": 5224919,
#>       "node_id": "MDk6TWlsZXN0b25lNTIyNDkxOQ==",
#>       "number": 22,
#>       "title": "1.1.0",
#>       "description": "Things we'll deal with after 1.0.0 is released. ",
#>       "creator": {
#>         "login": "romainfrancois",
#>         "id": 2625526,
#>         "node_id": "MDQ6VXNlcjI2MjU1MjY=",
#>         "avatar_url": "https://avatars.githubusercontent.com/u/2625526?v=4",
#>         "gravatar_id": "",
#>         "url": "https://api.github.com/users/romainfrancois",
#>         "html_url": "https://github.com/romainfrancois",
#>         "followers_url": "https://api.github.com/users/romainfrancois/followers",
#>         "following_url": "https://api.github.com/users/romainfrancois/following{/other_user}",
#>         "gists_url": "https://api.github.com/users/romainfrancois/gists{/gist_id}",
#>         "starred_url": "https://api.github.com/users/romainfrancois/starred{/owner}{/repo}",
#>         "subscriptions_url": "https://api.github.com/users/romainfrancois/subscriptions",
#>         "organizations_url": "https://api.github.com/users/romainfrancois/orgs",
#>         "repos_url": "https://api.github.com/users/romainfrancois/repos",
#>         "events_url": "https://api.github.com/users/romainfrancois/events{/privacy}",
#>         "received_events_url": "https://api.github.com/users/romainfrancois/received_events",
#>         "type": "User",
#>         "site_admin": false
#>       },
#>       "open_issues": 9,
#>       "closed_issues": 22,
#>       "state": "open",
#>       "created_at": "2020-03-22T09:33:34Z",
#>       "updated_at": "2022-08-31T19:28:55Z",
#>       "due_on": {},
#>       "closed_at": {}
#>     },
#>     "comments": 11,
#>     "created_at": "2020-05-13T16:14:07Z",
#>     "updated_at": "2022-08-04T13:32:16Z",
#>     "closed_at": {},
#>     "author_association": "MEMBER",
#>     "active_lock_reason": {},
#>     "body": "And call `vec_as_subscript()` first to cause an error with logical inputs.",
#>     "reactions": {
#>       "url": "https://api.github.com/repos/tidyverse/dplyr/issues/5242/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/5242/timeline",
#>     "performed_via_github_app": {},
#>     "state_reason": {}
#>   }
#> ] 

## 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"
  )
)
}