This is an extremely minimal client. You need to know the API to be able to use this client. All this function does is:
Try to substitute each listed parameter into
endpoint
, using the{parameter}
notation.If a GET request (the default), then add all other listed parameters as query parameters.
If not a GET request, then send the other parameters in the request body, as JSON.
Convert the response to an R list using
jsonlite::fromJSON()
.
Usage
gh(
endpoint,
...,
per_page = NULL,
.per_page = NULL,
.token = NULL,
.destfile = NULL,
.overwrite = FALSE,
.api_url = NULL,
.method = "GET",
.limit = NULL,
.accept = "application/vnd.github.v3+json",
.send_headers = NULL,
.progress = TRUE,
.params = list(),
.max_wait = 600,
.max_rate = NULL
)
Arguments
- endpoint
GitHub API endpoint. Must be one of the following forms:
METHOD path
, e.g.GET /rate_limit
,path
, e.g./rate_limit
,METHOD url
, e.g.GET https://api.github.com/rate_limit
,url
, e.g.https://api.github.com/rate_limit
.
If the method is not supplied, will use
.method
, which defaults to"GET"
.- ...
Name-value pairs giving API parameters. Will be matched into
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. NamedNULL
values are silently dropped. For GET requests, namedNA
values trigger an error. For other methods, namedNA
values are included in the body of the request, as JSONnull
.- per_page, .per_page
Number of items to return per page. If omitted, will be substituted by
max(.limit, 100)
if.limit
is set, otherwise determined by the API (never greater than 100).- .token
Authentication token. Defaults to
gh_token()
.- .destfile
Path to write response to disk. If
NULL
(default), response will be processed and returned as an object. If path is given, response will be written to disk in the form sent. gh writes the response to a temporary file, and renames that file to.destfile
after the request was successful. The name of the temporary file is created by adding a-<random>.gh-tmp
suffix to it, where<random>
is an ASCII string with random characters. gh removes the temporary file on error.- .overwrite
If
.destfile
is provided, whether to overwrite an existing file. Defaults toFALSE
. If an error happens the original file is kept.- .api_url
Github API url (default: https://api.github.com). Used if
endpoint
just contains a path. Defaults toGITHUB_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 toInf
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"
. IfAccept
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 defaultUser-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.- .max_wait
Maximum number of seconds to wait if rate limited. Defaults to 10 minutes.
- .max_rate
Maximum request rate in requests per second. Set this to automatically throttle requests.
Value
Answer from the API as a gh_response
object, which is also a
list
. Failed requests will generate an R error. Requests that
generate a raw response will return a raw vector.
See also
gh_gql()
if you want to use the GitHub GraphQL API,
gh_whoami()
for details on GitHub API token management.
Examples
## Repositories of a user, these are equivalent
gh("/users/hadley/repos", .limit = 2)
#> [
#> {
#> "id": 40423928,
#> "node_id": "MDEwOlJlcG9zaXRvcnk0MDQyMzkyOA==",
#> "name": "15-state-of-the-union",
#> "full_name": "hadley/15-state-of-the-union",
#> "private": false,
#> "owner": {
#> "login": "hadley",
#> "id": 4196,
#> "node_id": "MDQ6VXNlcjQxOTY=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/4196?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/hadley",
#> "html_url": "https://github.com/hadley",
#> "followers_url": "https://api.github.com/users/hadley/followers",
#> "following_url": "https://api.github.com/users/hadley/following{/other_user}",
#> "gists_url": "https://api.github.com/users/hadley/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/hadley/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/hadley/subscriptions",
#> "organizations_url": "https://api.github.com/users/hadley/orgs",
#> "repos_url": "https://api.github.com/users/hadley/repos",
#> "events_url": "https://api.github.com/users/hadley/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/hadley/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/hadley/15-state-of-the-union",
#> "description": {},
#> "fork": false,
#> "url": "https://api.github.com/repos/hadley/15-state-of-the-union",
#> "forks_url": "https://api.github.com/repos/hadley/15-state-of-the-union/forks",
#> "keys_url": "https://api.github.com/repos/hadley/15-state-of-the-union/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/hadley/15-state-of-the-union/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/hadley/15-state-of-the-union/teams",
#> "hooks_url": "https://api.github.com/repos/hadley/15-state-of-the-union/hooks",
#> "issue_events_url": "https://api.github.com/repos/hadley/15-state-of-the-union/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/hadley/15-state-of-the-union/events",
#> "assignees_url": "https://api.github.com/repos/hadley/15-state-of-the-union/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/hadley/15-state-of-the-union/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/hadley/15-state-of-the-union/tags",
#> "blobs_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/hadley/15-state-of-the-union/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/hadley/15-state-of-the-union/languages",
#> "stargazers_url": "https://api.github.com/repos/hadley/15-state-of-the-union/stargazers",
#> "contributors_url": "https://api.github.com/repos/hadley/15-state-of-the-union/contributors",
#> "subscribers_url": "https://api.github.com/repos/hadley/15-state-of-the-union/subscribers",
#> "subscription_url": "https://api.github.com/repos/hadley/15-state-of-the-union/subscription",
#> "commits_url": "https://api.github.com/repos/hadley/15-state-of-the-union/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/hadley/15-state-of-the-union/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/hadley/15-state-of-the-union/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/hadley/15-state-of-the-union/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/hadley/15-state-of-the-union/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/hadley/15-state-of-the-union/merges",
#> "archive_url": "https://api.github.com/repos/hadley/15-state-of-the-union/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/hadley/15-state-of-the-union/downloads",
#> "issues_url": "https://api.github.com/repos/hadley/15-state-of-the-union/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/hadley/15-state-of-the-union/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/hadley/15-state-of-the-union/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/hadley/15-state-of-the-union/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/hadley/15-state-of-the-union/labels{/name}",
#> "releases_url": "https://api.github.com/repos/hadley/15-state-of-the-union/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/hadley/15-state-of-the-union/deployments",
#> "created_at": "2015-08-09T03:22:26Z",
#> "updated_at": "2024-09-02T07:05:19Z",
#> "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,
#> "has_discussions": false,
#> "forks_count": 7,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 0,
#> "license": {},
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "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",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/hadley/15-student-papers",
#> "description": "Graphics & computing student paper winners @ JSM 2015",
#> "fork": false,
#> "url": "https://api.github.com/repos/hadley/15-student-papers",
#> "forks_url": "https://api.github.com/repos/hadley/15-student-papers/forks",
#> "keys_url": "https://api.github.com/repos/hadley/15-student-papers/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/hadley/15-student-papers/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/hadley/15-student-papers/teams",
#> "hooks_url": "https://api.github.com/repos/hadley/15-student-papers/hooks",
#> "issue_events_url": "https://api.github.com/repos/hadley/15-student-papers/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/hadley/15-student-papers/events",
#> "assignees_url": "https://api.github.com/repos/hadley/15-student-papers/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/hadley/15-student-papers/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/hadley/15-student-papers/tags",
#> "blobs_url": "https://api.github.com/repos/hadley/15-student-papers/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/hadley/15-student-papers/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/hadley/15-student-papers/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/hadley/15-student-papers/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/hadley/15-student-papers/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/hadley/15-student-papers/languages",
#> "stargazers_url": "https://api.github.com/repos/hadley/15-student-papers/stargazers",
#> "contributors_url": "https://api.github.com/repos/hadley/15-student-papers/contributors",
#> "subscribers_url": "https://api.github.com/repos/hadley/15-student-papers/subscribers",
#> "subscription_url": "https://api.github.com/repos/hadley/15-student-papers/subscription",
#> "commits_url": "https://api.github.com/repos/hadley/15-student-papers/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/hadley/15-student-papers/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/hadley/15-student-papers/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/hadley/15-student-papers/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/hadley/15-student-papers/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/hadley/15-student-papers/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/hadley/15-student-papers/merges",
#> "archive_url": "https://api.github.com/repos/hadley/15-student-papers/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/hadley/15-student-papers/downloads",
#> "issues_url": "https://api.github.com/repos/hadley/15-student-papers/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/hadley/15-student-papers/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/hadley/15-student-papers/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/hadley/15-student-papers/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/hadley/15-student-papers/labels{/name}",
#> "releases_url": "https://api.github.com/repos/hadley/15-student-papers/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/hadley/15-student-papers/deployments",
#> "created_at": "2015-08-11T13:51:29Z",
#> "updated_at": "2019-08-18T16:49:40Z",
#> "pushed_at": "2015-08-21T15:27:51Z",
#> "git_url": "git://github.com/hadley/15-student-papers.git",
#> "ssh_url": "git@github.com:hadley/15-student-papers.git",
#> "clone_url": "https://github.com/hadley/15-student-papers.git",
#> "svn_url": "https://github.com/hadley/15-student-papers",
#> "homepage": {},
#> "size": 2956,
#> "stargazers_count": 14,
#> "watchers_count": 14,
#> "language": "R",
#> "has_issues": true,
#> "has_projects": true,
#> "has_downloads": true,
#> "has_wiki": true,
#> "has_pages": false,
#> "has_discussions": false,
#> "forks_count": 0,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 0,
#> "license": {},
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "topics": [],
#> "visibility": "public",
#> "forks": 0,
#> "open_issues": 0,
#> "watchers": 14,
#> "default_branch": "master",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> }
#> ]
gh("/users/{username}/repos", username = "hadley", .limit = 2)
#> [
#> {
#> "id": 40423928,
#> "node_id": "MDEwOlJlcG9zaXRvcnk0MDQyMzkyOA==",
#> "name": "15-state-of-the-union",
#> "full_name": "hadley/15-state-of-the-union",
#> "private": false,
#> "owner": {
#> "login": "hadley",
#> "id": 4196,
#> "node_id": "MDQ6VXNlcjQxOTY=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/4196?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/hadley",
#> "html_url": "https://github.com/hadley",
#> "followers_url": "https://api.github.com/users/hadley/followers",
#> "following_url": "https://api.github.com/users/hadley/following{/other_user}",
#> "gists_url": "https://api.github.com/users/hadley/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/hadley/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/hadley/subscriptions",
#> "organizations_url": "https://api.github.com/users/hadley/orgs",
#> "repos_url": "https://api.github.com/users/hadley/repos",
#> "events_url": "https://api.github.com/users/hadley/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/hadley/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/hadley/15-state-of-the-union",
#> "description": {},
#> "fork": false,
#> "url": "https://api.github.com/repos/hadley/15-state-of-the-union",
#> "forks_url": "https://api.github.com/repos/hadley/15-state-of-the-union/forks",
#> "keys_url": "https://api.github.com/repos/hadley/15-state-of-the-union/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/hadley/15-state-of-the-union/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/hadley/15-state-of-the-union/teams",
#> "hooks_url": "https://api.github.com/repos/hadley/15-state-of-the-union/hooks",
#> "issue_events_url": "https://api.github.com/repos/hadley/15-state-of-the-union/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/hadley/15-state-of-the-union/events",
#> "assignees_url": "https://api.github.com/repos/hadley/15-state-of-the-union/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/hadley/15-state-of-the-union/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/hadley/15-state-of-the-union/tags",
#> "blobs_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/hadley/15-state-of-the-union/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/hadley/15-state-of-the-union/languages",
#> "stargazers_url": "https://api.github.com/repos/hadley/15-state-of-the-union/stargazers",
#> "contributors_url": "https://api.github.com/repos/hadley/15-state-of-the-union/contributors",
#> "subscribers_url": "https://api.github.com/repos/hadley/15-state-of-the-union/subscribers",
#> "subscription_url": "https://api.github.com/repos/hadley/15-state-of-the-union/subscription",
#> "commits_url": "https://api.github.com/repos/hadley/15-state-of-the-union/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/hadley/15-state-of-the-union/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/hadley/15-state-of-the-union/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/hadley/15-state-of-the-union/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/hadley/15-state-of-the-union/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/hadley/15-state-of-the-union/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/hadley/15-state-of-the-union/merges",
#> "archive_url": "https://api.github.com/repos/hadley/15-state-of-the-union/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/hadley/15-state-of-the-union/downloads",
#> "issues_url": "https://api.github.com/repos/hadley/15-state-of-the-union/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/hadley/15-state-of-the-union/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/hadley/15-state-of-the-union/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/hadley/15-state-of-the-union/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/hadley/15-state-of-the-union/labels{/name}",
#> "releases_url": "https://api.github.com/repos/hadley/15-state-of-the-union/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/hadley/15-state-of-the-union/deployments",
#> "created_at": "2015-08-09T03:22:26Z",
#> "updated_at": "2024-09-02T07:05:19Z",
#> "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,
#> "has_discussions": false,
#> "forks_count": 7,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 0,
#> "license": {},
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "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",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/hadley/15-student-papers",
#> "description": "Graphics & computing student paper winners @ JSM 2015",
#> "fork": false,
#> "url": "https://api.github.com/repos/hadley/15-student-papers",
#> "forks_url": "https://api.github.com/repos/hadley/15-student-papers/forks",
#> "keys_url": "https://api.github.com/repos/hadley/15-student-papers/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/hadley/15-student-papers/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/hadley/15-student-papers/teams",
#> "hooks_url": "https://api.github.com/repos/hadley/15-student-papers/hooks",
#> "issue_events_url": "https://api.github.com/repos/hadley/15-student-papers/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/hadley/15-student-papers/events",
#> "assignees_url": "https://api.github.com/repos/hadley/15-student-papers/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/hadley/15-student-papers/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/hadley/15-student-papers/tags",
#> "blobs_url": "https://api.github.com/repos/hadley/15-student-papers/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/hadley/15-student-papers/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/hadley/15-student-papers/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/hadley/15-student-papers/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/hadley/15-student-papers/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/hadley/15-student-papers/languages",
#> "stargazers_url": "https://api.github.com/repos/hadley/15-student-papers/stargazers",
#> "contributors_url": "https://api.github.com/repos/hadley/15-student-papers/contributors",
#> "subscribers_url": "https://api.github.com/repos/hadley/15-student-papers/subscribers",
#> "subscription_url": "https://api.github.com/repos/hadley/15-student-papers/subscription",
#> "commits_url": "https://api.github.com/repos/hadley/15-student-papers/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/hadley/15-student-papers/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/hadley/15-student-papers/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/hadley/15-student-papers/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/hadley/15-student-papers/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/hadley/15-student-papers/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/hadley/15-student-papers/merges",
#> "archive_url": "https://api.github.com/repos/hadley/15-student-papers/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/hadley/15-student-papers/downloads",
#> "issues_url": "https://api.github.com/repos/hadley/15-student-papers/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/hadley/15-student-papers/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/hadley/15-student-papers/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/hadley/15-student-papers/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/hadley/15-student-papers/labels{/name}",
#> "releases_url": "https://api.github.com/repos/hadley/15-student-papers/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/hadley/15-student-papers/deployments",
#> "created_at": "2015-08-11T13:51:29Z",
#> "updated_at": "2019-08-18T16:49:40Z",
#> "pushed_at": "2015-08-21T15:27:51Z",
#> "git_url": "git://github.com/hadley/15-student-papers.git",
#> "ssh_url": "git@github.com:hadley/15-student-papers.git",
#> "clone_url": "https://github.com/hadley/15-student-papers.git",
#> "svn_url": "https://github.com/hadley/15-student-papers",
#> "homepage": {},
#> "size": 2956,
#> "stargazers_count": 14,
#> "watchers_count": 14,
#> "language": "R",
#> "has_issues": true,
#> "has_projects": true,
#> "has_downloads": true,
#> "has_wiki": true,
#> "has_pages": false,
#> "has_discussions": false,
#> "forks_count": 0,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 0,
#> "license": {},
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "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": 390115983,
#> "node_id": "MDEwOlJlcG9zaXRvcnkzOTAxMTU5ODM=",
#> "name": "py-shiny",
#> "full_name": "posit-dev/py-shiny",
#> "private": false,
#> "owner": {
#> "login": "posit-dev",
#> "id": 107264312,
#> "node_id": "O_kgDOBmS5OA",
#> "avatar_url": "https://avatars.githubusercontent.com/u/107264312?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/posit-dev",
#> "html_url": "https://github.com/posit-dev",
#> "followers_url": "https://api.github.com/users/posit-dev/followers",
#> "following_url": "https://api.github.com/users/posit-dev/following{/other_user}",
#> "gists_url": "https://api.github.com/users/posit-dev/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/posit-dev/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/posit-dev/subscriptions",
#> "organizations_url": "https://api.github.com/users/posit-dev/orgs",
#> "repos_url": "https://api.github.com/users/posit-dev/repos",
#> "events_url": "https://api.github.com/users/posit-dev/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/posit-dev/received_events",
#> "type": "Organization",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/posit-dev/py-shiny",
#> "description": "Shiny for Python",
#> "fork": false,
#> "url": "https://api.github.com/repos/posit-dev/py-shiny",
#> "forks_url": "https://api.github.com/repos/posit-dev/py-shiny/forks",
#> "keys_url": "https://api.github.com/repos/posit-dev/py-shiny/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/posit-dev/py-shiny/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/posit-dev/py-shiny/teams",
#> "hooks_url": "https://api.github.com/repos/posit-dev/py-shiny/hooks",
#> "issue_events_url": "https://api.github.com/repos/posit-dev/py-shiny/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/posit-dev/py-shiny/events",
#> "assignees_url": "https://api.github.com/repos/posit-dev/py-shiny/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/posit-dev/py-shiny/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/posit-dev/py-shiny/tags",
#> "blobs_url": "https://api.github.com/repos/posit-dev/py-shiny/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/posit-dev/py-shiny/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/posit-dev/py-shiny/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/posit-dev/py-shiny/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/posit-dev/py-shiny/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/posit-dev/py-shiny/languages",
#> "stargazers_url": "https://api.github.com/repos/posit-dev/py-shiny/stargazers",
#> "contributors_url": "https://api.github.com/repos/posit-dev/py-shiny/contributors",
#> "subscribers_url": "https://api.github.com/repos/posit-dev/py-shiny/subscribers",
#> "subscription_url": "https://api.github.com/repos/posit-dev/py-shiny/subscription",
#> "commits_url": "https://api.github.com/repos/posit-dev/py-shiny/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/posit-dev/py-shiny/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/posit-dev/py-shiny/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/posit-dev/py-shiny/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/posit-dev/py-shiny/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/posit-dev/py-shiny/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/posit-dev/py-shiny/merges",
#> "archive_url": "https://api.github.com/repos/posit-dev/py-shiny/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/posit-dev/py-shiny/downloads",
#> "issues_url": "https://api.github.com/repos/posit-dev/py-shiny/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/posit-dev/py-shiny/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/posit-dev/py-shiny/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/posit-dev/py-shiny/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/posit-dev/py-shiny/labels{/name}",
#> "releases_url": "https://api.github.com/repos/posit-dev/py-shiny/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/posit-dev/py-shiny/deployments",
#> "created_at": "2021-07-27T20:19:49Z",
#> "updated_at": "2025-05-26T14:44:56Z",
#> "pushed_at": "2025-05-23T16:00:47Z",
#> "git_url": "git://github.com/posit-dev/py-shiny.git",
#> "ssh_url": "git@github.com:posit-dev/py-shiny.git",
#> "clone_url": "https://github.com/posit-dev/py-shiny.git",
#> "svn_url": "https://github.com/posit-dev/py-shiny",
#> "homepage": "https://shiny.posit.co/py/",
#> "size": 27858,
#> "stargazers_count": 1481,
#> "watchers_count": 1481,
#> "language": "Python",
#> "has_issues": true,
#> "has_projects": true,
#> "has_downloads": true,
#> "has_wiki": true,
#> "has_pages": true,
#> "has_discussions": true,
#> "forks_count": 99,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 488,
#> "license": {
#> "key": "mit",
#> "name": "MIT License",
#> "spdx_id": "MIT",
#> "url": "https://api.github.com/licenses/mit",
#> "node_id": "MDc6TGljZW5zZTEz"
#> },
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "topics": [],
#> "visibility": "public",
#> "forks": 99,
#> "open_issues": 488,
#> "watchers": 1481,
#> "default_branch": "main",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> },
#> {
#> "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",
#> "user_view_type": "public",
#> "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": "2025-05-20T14:08:42Z",
#> "pushed_at": "2025-02-24T21:06:08Z",
#> "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": 7996,
#> "stargazers_count": 523,
#> "watchers_count": 523,
#> "language": "R",
#> "has_issues": true,
#> "has_projects": false,
#> "has_downloads": true,
#> "has_wiki": false,
#> "has_pages": true,
#> "has_discussions": false,
#> "forks_count": 185,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 21,
#> "license": {
#> "key": "other",
#> "name": "Other",
#> "spdx_id": "NOASSERTION",
#> "url": {},
#> "node_id": "MDc6TGljZW5zZTA="
#> },
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "topics": [
#> "bigquery",
#> "database",
#> "r"
#> ],
#> "visibility": "public",
#> "forks": 185,
#> "open_issues": 21,
#> "watchers": 523,
#> "default_branch": "main",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> }
#> ]
gh("/users/{username}/starred", username = "hadley", .limit = 2)
#> [
#> {
#> "id": 390115983,
#> "node_id": "MDEwOlJlcG9zaXRvcnkzOTAxMTU5ODM=",
#> "name": "py-shiny",
#> "full_name": "posit-dev/py-shiny",
#> "private": false,
#> "owner": {
#> "login": "posit-dev",
#> "id": 107264312,
#> "node_id": "O_kgDOBmS5OA",
#> "avatar_url": "https://avatars.githubusercontent.com/u/107264312?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/posit-dev",
#> "html_url": "https://github.com/posit-dev",
#> "followers_url": "https://api.github.com/users/posit-dev/followers",
#> "following_url": "https://api.github.com/users/posit-dev/following{/other_user}",
#> "gists_url": "https://api.github.com/users/posit-dev/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/posit-dev/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/posit-dev/subscriptions",
#> "organizations_url": "https://api.github.com/users/posit-dev/orgs",
#> "repos_url": "https://api.github.com/users/posit-dev/repos",
#> "events_url": "https://api.github.com/users/posit-dev/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/posit-dev/received_events",
#> "type": "Organization",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "html_url": "https://github.com/posit-dev/py-shiny",
#> "description": "Shiny for Python",
#> "fork": false,
#> "url": "https://api.github.com/repos/posit-dev/py-shiny",
#> "forks_url": "https://api.github.com/repos/posit-dev/py-shiny/forks",
#> "keys_url": "https://api.github.com/repos/posit-dev/py-shiny/keys{/key_id}",
#> "collaborators_url": "https://api.github.com/repos/posit-dev/py-shiny/collaborators{/collaborator}",
#> "teams_url": "https://api.github.com/repos/posit-dev/py-shiny/teams",
#> "hooks_url": "https://api.github.com/repos/posit-dev/py-shiny/hooks",
#> "issue_events_url": "https://api.github.com/repos/posit-dev/py-shiny/issues/events{/number}",
#> "events_url": "https://api.github.com/repos/posit-dev/py-shiny/events",
#> "assignees_url": "https://api.github.com/repos/posit-dev/py-shiny/assignees{/user}",
#> "branches_url": "https://api.github.com/repos/posit-dev/py-shiny/branches{/branch}",
#> "tags_url": "https://api.github.com/repos/posit-dev/py-shiny/tags",
#> "blobs_url": "https://api.github.com/repos/posit-dev/py-shiny/git/blobs{/sha}",
#> "git_tags_url": "https://api.github.com/repos/posit-dev/py-shiny/git/tags{/sha}",
#> "git_refs_url": "https://api.github.com/repos/posit-dev/py-shiny/git/refs{/sha}",
#> "trees_url": "https://api.github.com/repos/posit-dev/py-shiny/git/trees{/sha}",
#> "statuses_url": "https://api.github.com/repos/posit-dev/py-shiny/statuses/{sha}",
#> "languages_url": "https://api.github.com/repos/posit-dev/py-shiny/languages",
#> "stargazers_url": "https://api.github.com/repos/posit-dev/py-shiny/stargazers",
#> "contributors_url": "https://api.github.com/repos/posit-dev/py-shiny/contributors",
#> "subscribers_url": "https://api.github.com/repos/posit-dev/py-shiny/subscribers",
#> "subscription_url": "https://api.github.com/repos/posit-dev/py-shiny/subscription",
#> "commits_url": "https://api.github.com/repos/posit-dev/py-shiny/commits{/sha}",
#> "git_commits_url": "https://api.github.com/repos/posit-dev/py-shiny/git/commits{/sha}",
#> "comments_url": "https://api.github.com/repos/posit-dev/py-shiny/comments{/number}",
#> "issue_comment_url": "https://api.github.com/repos/posit-dev/py-shiny/issues/comments{/number}",
#> "contents_url": "https://api.github.com/repos/posit-dev/py-shiny/contents/{+path}",
#> "compare_url": "https://api.github.com/repos/posit-dev/py-shiny/compare/{base}...{head}",
#> "merges_url": "https://api.github.com/repos/posit-dev/py-shiny/merges",
#> "archive_url": "https://api.github.com/repos/posit-dev/py-shiny/{archive_format}{/ref}",
#> "downloads_url": "https://api.github.com/repos/posit-dev/py-shiny/downloads",
#> "issues_url": "https://api.github.com/repos/posit-dev/py-shiny/issues{/number}",
#> "pulls_url": "https://api.github.com/repos/posit-dev/py-shiny/pulls{/number}",
#> "milestones_url": "https://api.github.com/repos/posit-dev/py-shiny/milestones{/number}",
#> "notifications_url": "https://api.github.com/repos/posit-dev/py-shiny/notifications{?since,all,participating}",
#> "labels_url": "https://api.github.com/repos/posit-dev/py-shiny/labels{/name}",
#> "releases_url": "https://api.github.com/repos/posit-dev/py-shiny/releases{/id}",
#> "deployments_url": "https://api.github.com/repos/posit-dev/py-shiny/deployments",
#> "created_at": "2021-07-27T20:19:49Z",
#> "updated_at": "2025-05-26T14:44:56Z",
#> "pushed_at": "2025-05-23T16:00:47Z",
#> "git_url": "git://github.com/posit-dev/py-shiny.git",
#> "ssh_url": "git@github.com:posit-dev/py-shiny.git",
#> "clone_url": "https://github.com/posit-dev/py-shiny.git",
#> "svn_url": "https://github.com/posit-dev/py-shiny",
#> "homepage": "https://shiny.posit.co/py/",
#> "size": 27858,
#> "stargazers_count": 1481,
#> "watchers_count": 1481,
#> "language": "Python",
#> "has_issues": true,
#> "has_projects": true,
#> "has_downloads": true,
#> "has_wiki": true,
#> "has_pages": true,
#> "has_discussions": true,
#> "forks_count": 99,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 488,
#> "license": {
#> "key": "mit",
#> "name": "MIT License",
#> "spdx_id": "MIT",
#> "url": "https://api.github.com/licenses/mit",
#> "node_id": "MDc6TGljZW5zZTEz"
#> },
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "topics": [],
#> "visibility": "public",
#> "forks": 99,
#> "open_issues": 488,
#> "watchers": 1481,
#> "default_branch": "main",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> },
#> {
#> "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",
#> "user_view_type": "public",
#> "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": "2025-05-20T14:08:42Z",
#> "pushed_at": "2025-02-24T21:06:08Z",
#> "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": 7996,
#> "stargazers_count": 523,
#> "watchers_count": 523,
#> "language": "R",
#> "has_issues": true,
#> "has_projects": false,
#> "has_downloads": true,
#> "has_wiki": false,
#> "has_pages": true,
#> "has_discussions": false,
#> "forks_count": 185,
#> "mirror_url": {},
#> "archived": false,
#> "disabled": false,
#> "open_issues_count": 21,
#> "license": {
#> "key": "other",
#> "name": "Other",
#> "spdx_id": "NOASSERTION",
#> "url": {},
#> "node_id": "MDc6TGljZW5zZTA="
#> },
#> "allow_forking": true,
#> "is_template": false,
#> "web_commit_signoff_required": false,
#> "topics": [
#> "bigquery",
#> "database",
#> "r"
#> ],
#> "visibility": "public",
#> "forks": 185,
#> "open_issues": 21,
#> "watchers": 523,
#> "default_branch": "main",
#> "permissions": {
#> "admin": false,
#> "maintain": false,
#> "push": false,
#> "triage": false,
#> "pull": false
#> }
#> }
#> ]
if (FALSE) {
## Create a repository, needs a token (see gh_token())
gh("POST /user/repos", name = "foobar")
}
## Issues of a repository
gh("/repos/hadley/dplyr/issues")
#> [
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7683",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7683/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7683/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7683/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7683",
#> "id": 3090485528,
#> "node_id": "I_kwDOAGIUpc64NREY",
#> "number": 7683,
#> "title": "Sorting of list columns",
#> "user": {
#> "login": "lschneiderbauer",
#> "id": 422100,
#> "node_id": "MDQ6VXNlcjQyMjEwMA==",
#> "avatar_url": "https://avatars.githubusercontent.com/u/422100?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/lschneiderbauer",
#> "html_url": "https://github.com/lschneiderbauer",
#> "followers_url": "https://api.github.com/users/lschneiderbauer/followers",
#> "following_url": "https://api.github.com/users/lschneiderbauer/following{/other_user}",
#> "gists_url": "https://api.github.com/users/lschneiderbauer/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/lschneiderbauer/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/lschneiderbauer/subscriptions",
#> "organizations_url": "https://api.github.com/users/lschneiderbauer/orgs",
#> "repos_url": "https://api.github.com/users/lschneiderbauer/repos",
#> "events_url": "https://api.github.com/users/lschneiderbauer/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/lschneiderbauer/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-05-26T08:53:14Z",
#> "updated_at": "2025-05-26T08:56:09Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Currently, `arrange()` does not seem to affect list columns:\n\n``` r\nlibrary(dplyr)\n#> \n#> Attache Paket: 'dplyr'\n#> Die folgenden Objekte sind maskiert von 'package:stats':\n#> \n#> filter, lag\n#> Die folgenden Objekte sind maskiert von 'package:base':\n#> \n#> intersect, setdiff, setequal, union\n\ndf_list_sorted <-\n tibble(\n x = list(c(3, 1), c(1, 1))\n ) |>\n arrange(x)\n\ndf_list_sorted |>\n tidyr::unnest_wider(x, names_sep = \"_\")\n#> # A tibble: 2 × 2\n#> x_1 x_2\n#> <dbl> <dbl>\n#> 1 3 1\n#> 2 1 1\n```\n\n<sup>Created on 2025-05-26 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n\nShould an order be defined for list columns, so that `arrange()` actually does something?\nFor reference, duckdb defines an order on list type which seems pretty natural and universal: https://duckdb.org/docs/stable/sql/data_types/list.html#comparison-and-ordering\n> The LIST ordering is defined positionally using the following rules, where min_len = min(len(l1), len(l2)).\n> \n> Equality. l1 and l2 are equal, if for each i in [1, min_len]: l1[i] = l2[i].\n> Less Than. For the first index i in [1, min_len] where l1[i] != l2[i]: If l1[i] < l2[i], l1 is less than l2.\n\nI believe the equivalent R definition would be something along those lines:\n``` r\n`%==%` <- function(x, y) {\n min_len <- min(length(x), length(y))\n sub <- seq(1, min_len)\n\n all(x[sub] == y[sub])\n}\n\n`%<%` <- function(x, y) {\n min_len <- min(length(x), length(y))\n sub <- seq(1, min_len)\n\n i <- head(which(x[sub] != y[sub]), n = 1L)\n\n if (length(i) < 1) {\n return(FALSE)\n } else {\n x[[i]] < y[[i]]\n }\n}\n\n`%<=%` <- function(x, y) {\n (x %<% y) || (x %==% y)\n}\n\n# One maybe wants to sort w.r.t. to the `%<=%` operator?\n# Examples:\n\nc(3, 1) %<=% c(1, 1)\n#> [1] FALSE\n\nc(1, 1) %<=% c(3, 1)\n#> [1] TRUE\n\nc(1, 3) %<=% c(3, 1)\n#> [1] TRUE\n\nc(1, 1) %<=% c(1, 1)\n#> [1] TRUE\n```\n\n<sup>Created on 2025-05-26 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n\nShould `arrange()` sort w.r.t. to `%<=%` when used on list columns?",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7683/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/7683/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7682",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7682/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7682/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7682/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7682",
#> "id": 3052748220,
#> "node_id": "I_kwDOAGIUpc619T28",
#> "number": 7682,
#> "title": "Allowing `join_by()` in `rows_update()` and friends",
#> "user": {
#> "login": "jl5000",
#> "id": 26303390,
#> "node_id": "MDQ6VXNlcjI2MzAzMzkw",
#> "avatar_url": "https://avatars.githubusercontent.com/u/26303390?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/jl5000",
#> "html_url": "https://github.com/jl5000",
#> "followers_url": "https://api.github.com/users/jl5000/followers",
#> "following_url": "https://api.github.com/users/jl5000/following{/other_user}",
#> "gists_url": "https://api.github.com/users/jl5000/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/jl5000/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/jl5000/subscriptions",
#> "organizations_url": "https://api.github.com/users/jl5000/orgs",
#> "repos_url": "https://api.github.com/users/jl5000/repos",
#> "events_url": "https://api.github.com/users/jl5000/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/jl5000/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-05-09T17:16:54Z",
#> "updated_at": "2025-05-09T17:16:54Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Currently a `join_by()` specification can only be used in mutating and filtering joins. Would it be possible to allow its use in `rows_update()` and related functions? These functions have a `by` argument which can only take a character vector.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7682/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/7682/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7681",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7681/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7681/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7681/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7681",
#> "id": 3037098251,
#> "node_id": "PR_kwDOAGIUpc6Uz1iI",
#> "number": 7681,
#> "title": "fix typos",
#> "user": {
#> "login": "musvaage",
#> "id": 112724366,
#> "node_id": "U_kgDOBrgJjg",
#> "avatar_url": "https://avatars.githubusercontent.com/u/112724366?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/musvaage",
#> "html_url": "https://github.com/musvaage",
#> "followers_url": "https://api.github.com/users/musvaage/followers",
#> "following_url": "https://api.github.com/users/musvaage/following{/other_user}",
#> "gists_url": "https://api.github.com/users/musvaage/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/musvaage/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/musvaage/subscriptions",
#> "organizations_url": "https://api.github.com/users/musvaage/orgs",
#> "repos_url": "https://api.github.com/users/musvaage/repos",
#> "events_url": "https://api.github.com/users/musvaage/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/musvaage/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-05-03T02:29:21Z",
#> "updated_at": "2025-05-03T02:29:21Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7681",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7681",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7681.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7681.patch",
#> "merged_at": {}
#> },
#> "body": "dumped repo strings exposed a couple of typos",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7681/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/7681/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7680",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7680/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7680/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7680/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7680",
#> "id": 3014574689,
#> "node_id": "I_kwDOAGIUpc6zrsJh",
#> "number": 7680,
#> "title": "Error installing dplyr@1.1.4 with R 4.5.0 on MacOS 15.3.2",
#> "user": {
#> "login": "devster31",
#> "id": 1912062,
#> "node_id": "MDQ6VXNlcjE5MTIwNjI=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1912062?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/devster31",
#> "html_url": "https://github.com/devster31",
#> "followers_url": "https://api.github.com/users/devster31/followers",
#> "following_url": "https://api.github.com/users/devster31/following{/other_user}",
#> "gists_url": "https://api.github.com/users/devster31/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/devster31/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/devster31/subscriptions",
#> "organizations_url": "https://api.github.com/users/devster31/orgs",
#> "repos_url": "https://api.github.com/users/devster31/repos",
#> "events_url": "https://api.github.com/users/devster31/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/devster31/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 3,
#> "created_at": "2025-04-23T16:18:26Z",
#> "updated_at": "2025-04-23T17:23:55Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Hello,\nI'm trying to install `dplyr`.\nBelow some info on my system:\n```\n➜ R --version\nR version 4.5.0 (2025-04-11) -- \"How About a Twenty-Six\"\nCopyright (C) 2025 The R Foundation for Statistical Computing\nPlatform: x86_64-apple-darwin23.6.0\n\n➜ clang -v\nApple clang version 16.0.0 (clang-1600.0.26.6)\nTarget: x86_64-apple-darwin24.3.0\nThread model: posix\nInstalledDir: /Library/Developer/CommandLineTools/usr/bin\n```\nAnd the error:\n```\napertura URL 'https://cloud.r-project.org/src/contrib/dplyr_1.1.4.tar.gz'\nContent type 'application/x-gzip' length 1207521 bytes (1.2 MB)\n==================================================\ndownloaded 1.2 MB\n\n* installing *source* package ‘dplyr’ ...\n** this is package ‘dplyr’ version ‘1.1.4’\n** pacchetto ‘dplyr’ aperto con successo con controllo somme MD5\n** using staged installation\n** libs\ncon compilatore C++: ‘Apple clang version 16.0.0 (clang-1600.0.26.6)’\ncon SDK: ‘MacOSX15.2.sdk’\nclang++ -std=gnu++17 -I\"/usr/local/Cellar/r/4.5.0/lib/R/include\" -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/readline/include -I/usr/local/opt/xz/include -I/usr/local/include -fPIC -g -O2 -c chop.cpp -o chop.o\nIn file included from chop.cpp:1:\nIn file included from ./dplyr.h:5:\n/usr/local/Cellar/r/4.5.0/lib/R/include/R.h:39:11: fatal error: 'cstdlib' file not found\n 39 | # include <cstdlib>\n | ^~~~~~~~~\n1 error generated.\nmake: *** [chop.o] Error 1\nERROR: compilation failed for package ‘dplyr’\n* removing ‘/usr/local/lib/R/4.5/site-library/dplyr’\n\nI pacchetti scaricati con il codice sorgente sono in\n\t‘/private/var/folders/ln/r_c5vx295nd751vpyxq94bd80000gn/T/Rtmp3oGKC7/downloaded_packages’\nMessaggio di avvertimento:\nIn install.packages(\"dplyr\") :\n l'installazione del pacchetto ‘dplyr’ ha uno stato di uscita non-zero\n```\nMy `~/.R/Makevars` file is empty right now.\n\nAny tips on how to fix?",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7680/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/7680/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7677",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7677/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7677/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7677/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7677",
#> "id": 3000068668,
#> "node_id": "PR_kwDOAGIUpc6S3OfK",
#> "number": 7677,
#> "title": "Revdepcheck results",
#> "user": {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-04-16T15:51:56Z",
#> "updated_at": "2025-04-16T15:51:56Z",
#> "closed_at": {},
#> "author_association": "MEMBER",
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7677",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7677",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7677.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7677.patch",
#> "merged_at": {}
#> },
#> "body": "An interesting problem with `case_when()` and arrays.\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7677/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/7677/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7676",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7676/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7676/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7676/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7676",
#> "id": 2992153280,
#> "node_id": "PR_kwDOAGIUpc6ScG92",
#> "number": 7676,
#> "title": "Use {palmerpenguins} dataset in arrange() examples",
#> "user": {
#> "login": "KittJonathan",
#> "id": 70012823,
#> "node_id": "MDQ6VXNlcjcwMDEyODIz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/70012823?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/KittJonathan",
#> "html_url": "https://github.com/KittJonathan",
#> "followers_url": "https://api.github.com/users/KittJonathan/followers",
#> "following_url": "https://api.github.com/users/KittJonathan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/KittJonathan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/KittJonathan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/KittJonathan/subscriptions",
#> "organizations_url": "https://api.github.com/users/KittJonathan/orgs",
#> "repos_url": "https://api.github.com/users/KittJonathan/repos",
#> "events_url": "https://api.github.com/users/KittJonathan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/KittJonathan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 5,
#> "created_at": "2025-04-14T07:32:46Z",
#> "updated_at": "2025-04-16T13:36:33Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7676",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7676",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7676.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7676.patch",
#> "merged_at": {}
#> },
#> "body": "I added examples using the penguins dataset in the arrange() documentation \r\n+ added {palmerpenguins} to suggests in the dplyr DESCRIPTION file",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7676/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/7676/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7673",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7673/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7673/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7673/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7673",
#> "id": 2968525786,
#> "node_id": "I_kwDOAGIUpc6w8Bva",
#> "number": 7673,
#> "title": "select() function documentation",
#> "user": {
#> "login": "KittJonathan",
#> "id": 70012823,
#> "node_id": "MDQ6VXNlcjcwMDEyODIz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/70012823?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/KittJonathan",
#> "html_url": "https://github.com/KittJonathan",
#> "followers_url": "https://api.github.com/users/KittJonathan/followers",
#> "following_url": "https://api.github.com/users/KittJonathan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/KittJonathan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/KittJonathan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/KittJonathan/subscriptions",
#> "organizations_url": "https://api.github.com/users/KittJonathan/orgs",
#> "repos_url": "https://api.github.com/users/KittJonathan/repos",
#> "events_url": "https://api.github.com/users/KittJonathan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/KittJonathan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-04-03T06:54:28Z",
#> "updated_at": "2025-04-03T06:54:28Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Hello there,\n\nGoing through the dplyr functions docs for a course prep, and I found the doc for the select() function quite confusing with the two datasets used, starwars and iris, especially with the use of pivot_...() functions in the select() doc.\n\nI would, personally, find the doc easier to read and understand if the mentions of the pivot_...() functions were limited to the corresponding doc.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7673/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/7673/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7671",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7671/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7671/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7671/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7671",
#> "id": 2966907876,
#> "node_id": "I_kwDOAGIUpc6w12vk",
#> "number": 7671,
#> "title": "Introduction to dplyr article - slice_max() and slice_min()",
#> "user": {
#> "login": "KittJonathan",
#> "id": 70012823,
#> "node_id": "MDQ6VXNlcjcwMDEyODIz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/70012823?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/KittJonathan",
#> "html_url": "https://github.com/KittJonathan",
#> "followers_url": "https://api.github.com/users/KittJonathan/followers",
#> "following_url": "https://api.github.com/users/KittJonathan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/KittJonathan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/KittJonathan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/KittJonathan/subscriptions",
#> "organizations_url": "https://api.github.com/users/KittJonathan/orgs",
#> "repos_url": "https://api.github.com/users/KittJonathan/repos",
#> "events_url": "https://api.github.com/users/KittJonathan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/KittJonathan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-04-02T16:03:21Z",
#> "updated_at": "2025-04-02T16:03:21Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Hello there!\n\nWhile reading the \"Introduction to dplyr\" article ([here](https://dplyr.tidyverse.org/articles/dplyr.html)), I came across something that I think would need correcting : in the part on the [slice functions](https://dplyr.tidyverse.org/articles/dplyr.html#choose-rows-using-their-position-with-slice), it's noted that\n\n> [slice_min()](https://dplyr.tidyverse.org/reference/slice.html) and [slice_max()](https://dplyr.tidyverse.org/reference/slice.html) select rows with highest or lowest values of a variable. Note that we first must choose only the values which are not NA.\n\nI tried running the code without filtering out NAs for the variable of interest, and it seems to work : \n\n`starwars |> slice_max(height, n = 3)` and `starwars |> filter(!is.na(height)) |> slice_max(height, n = 3)` return the same result.\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7671/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/7671/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7668",
#> "id": 2905299014,
#> "node_id": "I_kwDOAGIUpc6tK1hG",
#> "number": 7668,
#> "title": "`tbl_vars()` accesses `nrow()` unnecessarily",
#> "user": {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-03-09T09:04:12Z",
#> "updated_at": "2025-03-09T09:04:12Z",
#> "closed_at": {},
#> "author_association": "MEMBER",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "This currently affects joins with `library(duckplyr)` . I can work around, perhaps we find a nicer way.\n\nDifficult to show with current duckplyr because we have our `group_vars()` method. The calling sequence goes as follows:\n\n- `tbl_vars()` calls `group_vars()` in the generic\n- `group_vars.data.frame()` calls `names(group_data())`\n- `group_data()` needs `nrow()`\n\nPerhaps we can implement an ALTREP solution for `group_vars()` ? Or add an argument to `group_data()` that indicates we really only care about the names?\n\nRelevant backtrace from a debugging session:\n\n```\nBacktrace:\n ▆\n 1. ├─testthat::expect_error(...) at test-tpch.R:245:3\n 2. │ └─testthat:::expect_condition_matching(...)\n 3. │ └─testthat:::quasi_capture(...)\n 4. │ ├─testthat (local) .capture(...)\n 5. │ │ └─base::withCallingHandlers(...)\n 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo))\n 7. └─duckplyr:::tpch_02() at test-tpch.R:247:5\n 8. ├─dplyr::inner_join(na_matches = TPCH_NA_MATCHES, p, ps, by = c(p_partkey = \"ps_partkey\")) at duckplyr/R/tpch.R:35:3\n 9. └─duckplyr (local) inner_join.data.frame(na_matches = TPCH_NA_MATCHES, p, ps, by = c(p_partkey = \"ps_partkey\"))\n 10. ├─duckplyr:::rel_try(...) at duckplyr/R/inner_join.R:10:3\n 11. │ └─base::force(rel) at duckplyr/R/relational.R:62:5\n 12. └─duckplyr:::rel_join_impl(...) at duckplyr/R/inner_join.R:22:7\n 13. └─duckplyr:::tbl_vars_safe(x) at duckplyr/R/join.R:19:3\n 14. └─dplyr::tbl_vars(x) at duckplyr/R/join.R:142:3\n 15. ├─dplyr:::new_sel_vars(tbl_vars_dispatch(x), group_vars(x))\n 16. │ └─base::structure(...)\n 17. ├─dplyr::group_vars(x)\n 18. └─dplyr:::group_vars.data.frame(x)\n 19. ├─generics::setdiff(names(group_data(x)), \".rows\")\n 20. ├─dplyr::group_data(x)\n 21. └─dplyr:::group_data.data.frame(x)\n 22. └─base::nrow(.data)\n 23. ├─base::dim(x)\n 24. └─base::dim.data.frame(x)\n 25. └─base::.row_names_info(x, 2L)\n```",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7667",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7667/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7667/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7667/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7667",
#> "id": 2888866524,
#> "node_id": "I_kwDOAGIUpc6sMJrc",
#> "number": 7667,
#> "title": "Move `reframe()` out of the experimental stage",
#> "user": {
#> "login": "DavisVaughan",
#> "id": 19150088,
#> "node_id": "MDQ6VXNlcjE5MTUwMDg4",
#> "avatar_url": "https://avatars.githubusercontent.com/u/19150088?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DavisVaughan",
#> "html_url": "https://github.com/DavisVaughan",
#> "followers_url": "https://api.github.com/users/DavisVaughan/followers",
#> "following_url": "https://api.github.com/users/DavisVaughan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DavisVaughan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DavisVaughan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DavisVaughan/subscriptions",
#> "organizations_url": "https://api.github.com/users/DavisVaughan/orgs",
#> "repos_url": "https://api.github.com/users/DavisVaughan/repos",
#> "events_url": "https://api.github.com/users/DavisVaughan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DavisVaughan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-03-01T12:27:18Z",
#> "updated_at": "2025-03-01T12:27:18Z",
#> "closed_at": {},
#> "author_association": "MEMBER",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": {},
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7667/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/7667/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7665",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7665/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7665/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7665/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7665",
#> "id": 2880898418,
#> "node_id": "I_kwDOAGIUpc6rtwVy",
#> "number": 7665,
#> "title": "Keep the column attribute label in `bind_rows`",
#> "user": {
#> "login": "ynsec37",
#> "id": 98389771,
#> "node_id": "U_kgDOBd1PCw",
#> "avatar_url": "https://avatars.githubusercontent.com/u/98389771?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/ynsec37",
#> "html_url": "https://github.com/ynsec37",
#> "followers_url": "https://api.github.com/users/ynsec37/followers",
#> "following_url": "https://api.github.com/users/ynsec37/following{/other_user}",
#> "gists_url": "https://api.github.com/users/ynsec37/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/ynsec37/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/ynsec37/subscriptions",
#> "organizations_url": "https://api.github.com/users/ynsec37/orgs",
#> "repos_url": "https://api.github.com/users/ynsec37/repos",
#> "events_url": "https://api.github.com/users/ynsec37/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/ynsec37/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-02-26T09:35:44Z",
#> "updated_at": "2025-02-26T09:35:44Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "The `bind_rows` output miss the label of column as shown in the below\n``` r\nlibrary(dplyr, warn.conflicts = FALSE)\n\npackageVersion(\"dplyr\")\n#> [1] '1.1.4'\n\ndf1 <- tibble(x = 1:2, y = letters[1:2])\ndf2 <- tibble(x = 4:5, z = 1:2)\n\nattr(df1$x, \"label\") <- \"df1 lable x\"\nattr(df2$x, \"label\") <- \"df2 lable x\"\n\n\noutput1 <- bind_rows(list(df1, df2))\nattributes(output1$x)\n#> NULL\n\noutput2 <- data.table::rbindlist(list(df1, df2), use.names = TRUE, fill = TRUE) |>\n as.data.frame()\nattributes(output2$x)\n#> $label\n#> [1] \"df1 lable x\"\n\noutput3 <- data.table::rbindlist(list(df2, df1), use.names = TRUE, fill = TRUE) |>\n as.data.frame()\nattributes(output3$x)\n#> $label\n#> [1] \"df2 lable x\"\n```\n\n<sup>Created on 2025-02-26 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7665/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/7665/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7663",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7663/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7663/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7663/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7663",
#> "id": 2867479942,
#> "node_id": "I_kwDOAGIUpc6q6kWG",
#> "number": 7663,
#> "title": "mutate() doesn't seem to signal warning conditions properly",
#> "user": {
#> "login": "jmbarbone",
#> "id": 38573843,
#> "node_id": "MDQ6VXNlcjM4NTczODQz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/38573843?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/jmbarbone",
#> "html_url": "https://github.com/jmbarbone",
#> "followers_url": "https://api.github.com/users/jmbarbone/followers",
#> "following_url": "https://api.github.com/users/jmbarbone/following{/other_user}",
#> "gists_url": "https://api.github.com/users/jmbarbone/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/jmbarbone/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/jmbarbone/subscriptions",
#> "organizations_url": "https://api.github.com/users/jmbarbone/orgs",
#> "repos_url": "https://api.github.com/users/jmbarbone/repos",
#> "events_url": "https://api.github.com/users/jmbarbone/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/jmbarbone/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 2,
#> "created_at": "2025-02-20T23:10:21Z",
#> "updated_at": "2025-02-21T15:27:49Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "`mutate()` doesn't seem to signal named warning conditions for calling handlers to pick up.\n\nExample: function emits a custom condition, and that specific class can't be suppressed.\n\n``` r\nlibrary(dplyr, warn.conflicts = FALSE)\n\nfoo_warn <- function(x) {\n warning(my_warning)\n x\n}\n\nmy_warning <- structure(\n list(message = \"MY_WARNING\", call = NULL),\n class = c(\"my_warning\", \"warning\", \"condition\")\n)\n\ndf <- data.frame(x = 1, y = 2)\n\nsuppressWarnings(\n mutate(df, x = foo_warn(x)),\n \"my_warning\"\n)\n#> Warning: There was 1 warning in `mutate()`.\n#> ℹ In argument: `x = foo_warn(x)`.\n#> Caused by warning:\n#> ! MY_WARNING\n#> x y\n#> 1 1 2\n\n# my_warningis never signaled, handlers can't pick it up\nwithCallingHandlers(\n mutate(df, x = foo_warn(x)),\n my_warning = function(c) {\n stop(\"condition signaled\")\n }\n)\n#> Warning: There was 1 warning in `mutate()`.\n#> ℹ In argument: `x = foo_warn(x)`.\n#> Caused by warning:\n#> ! MY_WARNING\n#> x y\n#> 1 1 2\n\n# but removing the `warning` class is at least a work-around\n# \nfoo_cond <- function(x) {\n warning(my_condition)\n x\n}\n\nmy_condition <- structure(\n list(message = \"MY_CONDITION\", call = NULL),\n class = c(\"my_condition\", \"condition\")\n)\n\nwithCallingHandlers(\n mutate(df, x = foo_cond(x)),\n my_condition = function(c) {\n stop(\"condition signaled\")\n }\n)\n#> Error in (function (c) : condition signaled\n```\n\n<sup>Created on 2025-02-20 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7663/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/7663/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7657",
#> "id": 2848600494,
#> "node_id": "I_kwDOAGIUpc6pyjGu",
#> "number": 7657,
#> "title": "reframe with across returns an unhelpful error message",
#> "user": {
#> "login": "const-ae",
#> "id": 5359014,
#> "node_id": "MDQ6VXNlcjUzNTkwMTQ=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/5359014?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/const-ae",
#> "html_url": "https://github.com/const-ae",
#> "followers_url": "https://api.github.com/users/const-ae/followers",
#> "following_url": "https://api.github.com/users/const-ae/following{/other_user}",
#> "gists_url": "https://api.github.com/users/const-ae/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/const-ae/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/const-ae/subscriptions",
#> "organizations_url": "https://api.github.com/users/const-ae/orgs",
#> "repos_url": "https://api.github.com/users/const-ae/repos",
#> "events_url": "https://api.github.com/users/const-ae/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/const-ae/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 17708198,
#> "node_id": "MDU6TGFiZWwxNzcwODE5OA==",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/bug",
#> "name": "bug",
#> "color": "E0B3A2",
#> "default": true,
#> "description": "an unexpected problem or unintended behavior"
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-02-12T15:28:36Z",
#> "updated_at": "2025-02-12T17:20:55Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "When I call `reframe` with `across` and the length of the output is not consistent, the error message is a lot less helpful if the output of `across` is not named:\n\n``` r\nlibrary(tidyverse)\ntibble(x = 1:3, y = 4:6) |>\n reframe(test = across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in `reframe()`:\n#> ℹ In argument: `test = across(...)`.\n#> Caused by error in `across()`:\n#> ! Can't recycle `..1` (size 3) to match `..2` (size 12).\n\ntibble(x = 1:3, y = 4:6) |>\n reframe(across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in names(dots)[[i]]: subscript out of bounds\n```\n\n<sup>Created on 2025-02-12 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\nThe situation is slightly better with `mutate`:\n\n``` r\nlibrary(tidyverse)\ntibble(x = 1:3, y = 4:6) |>\n mutate(test = across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in `mutate()`:\n#> ℹ In argument: `test = across(...)`.\n#> Caused by error in `across()`:\n#> ! Can't recycle `..1` (size 3) to match `..2` (size 12).\n\ntibble(x = 1:3, y = 4:6) |>\n mutate(across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in `mutate()`:\n#> ℹ In argument: `across(...)`.\n#> Caused by error in `across()`:\n#> ! Can't compute column `y`.\n#> Caused by error in `dplyr_internal_error()`:\n```\n\n<sup>Created on 2025-02-12 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n<details style=\"margin-bottom:10px;\">\n<summary>\nSession info\n<\/summary>\n\n``` r\nsessioninfo::session_info()\n#> ─ Session info ───────────────────────────────────────────────────────────────\n#> setting value\n#> version R version 4.4.1 (2024-06-14)\n#> os macOS Sonoma 14.6\n#> system aarch64, darwin20\n#> ui X11\n#> language (EN)\n#> collate en_US.UTF-8\n#> ctype en_US.UTF-8\n#> tz Europe/London\n#> date 2025-02-12\n#> pandoc 3.2 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)\n#> \n#> ─ Packages ───────────────────────────────────────────────────────────────────\n#> ! package * version date (UTC) lib source\n#> P cli 3.6.3 2024-06-21 [?] CRAN (R 4.4.0)\n#> P colorspace 2.1-1 2024-07-26 [?] CRAN (R 4.4.0)\n#> P digest 0.6.37 2024-08-19 [?] CRAN (R 4.4.1)\n#> P dplyr * 1.1.4 2023-11-17 [?] CRAN (R 4.4.0)\n#> P evaluate 1.0.3 2025-01-10 [?] CRAN (R 4.4.1)\n#> P fansi 1.0.6 2023-12-08 [?] CRAN (R 4.4.0)\n#> P fastmap 1.2.0 2024-05-15 [?] CRAN (R 4.4.0)\n#> P forcats * 1.0.0 2023-01-29 [?] CRAN (R 4.4.0)\n#> P fs 1.6.5 2024-10-30 [?] CRAN (R 4.4.1)\n#> P generics 0.1.3 2022-07-05 [?] CRAN (R 4.4.0)\n#> P ggplot2 * 3.5.1 2024-04-23 [?] CRAN (R 4.4.0)\n#> P glue 1.8.0 2024-09-30 [?] CRAN (R 4.4.1)\n#> P gtable 0.3.6 2024-10-25 [?] CRAN (R 4.4.1)\n#> P hms 1.1.3 2023-03-21 [?] CRAN (R 4.4.0)\n#> P htmltools 0.5.8.1 2024-04-04 [?] CRAN (R 4.4.0)\n#> P knitr 1.49 2024-11-08 [?] CRAN (R 4.4.1)\n#> P lifecycle 1.0.4 2023-11-07 [?] CRAN (R 4.4.0)\n#> P lubridate * 1.9.3 2023-09-27 [?] CRAN (R 4.4.0)\n#> P magrittr 2.0.3 2022-03-30 [?] CRAN (R 4.4.0)\n#> P munsell 0.5.1 2024-04-01 [?] CRAN (R 4.4.0)\n#> P pillar 1.9.0 2023-03-22 [?] CRAN (R 4.4.0)\n#> P pkgconfig 2.0.3 2019-09-22 [?] CRAN (R 4.4.0)\n#> P purrr * 1.0.2 2023-08-10 [?] CRAN (R 4.4.0)\n#> P R6 2.5.1 2021-08-19 [?] CRAN (R 4.4.0)\n#> P readr * 2.1.5 2024-01-10 [?] CRAN (R 4.4.0)\n#> P reprex 2.1.1 2024-07-06 [?] CRAN (R 4.4.0)\n#> P rlang 1.1.4 2024-06-04 [?] CRAN (R 4.4.0)\n#> P rmarkdown 2.29 2024-11-04 [?] CRAN (R 4.4.1)\n#> P rstudioapi 0.17.1 2024-10-22 [?] CRAN (R 4.4.1)\n#> P scales 1.3.0 2023-11-28 [?] CRAN (R 4.4.0)\n#> P sessioninfo 1.2.2 2021-12-06 [?] CRAN (R 4.4.0)\n#> P stringi 1.8.4 2024-05-06 [?] CRAN (R 4.4.0)\n#> P stringr * 1.5.1 2023-11-14 [?] CRAN (R 4.4.0)\n#> P tibble * 3.2.1 2023-03-20 [?] CRAN (R 4.4.0)\n#> P tidyr * 1.3.1 2024-01-24 [?] CRAN (R 4.4.0)\n#> P tidyselect 1.2.1 2024-03-11 [?] CRAN (R 4.4.0)\n#> P tidyverse * 2.0.0 2023-02-22 [?] CRAN (R 4.4.0)\n#> P timechange 0.3.0 2024-01-18 [?] CRAN (R 4.4.0)\n#> P tzdb 0.4.0 2023-05-12 [?] CRAN (R 4.4.0)\n#> P utf8 1.2.4 2023-10-22 [?] CRAN (R 4.4.0)\n#> P vctrs 0.6.5 2023-12-01 [?] CRAN (R 4.4.0)\n#> P withr 3.0.2 2024-10-28 [?] CRAN (R 4.4.1)\n#> P xfun 0.50 2025-01-07 [?] CRAN (R 4.4.1)\n#> P yaml 2.3.10 2024-07-26 [?] CRAN (R 4.4.0)\n#> \n#> [1] /Users/ahlmanne/Documents/Work_Projects/precancer-atlas-code/renv/library/macos/R-4.4/aarch64-apple-darwin20\n#> [2] /Users/ahlmanne/Library/Caches/org.R-project.R/R/renv/sandbox/macos/R-4.4/aarch64-apple-darwin20/f7156815\n#> [3] /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library\n#> \n#> P ── Loaded and on-disk path mismatch.\n#> \n#> ──────────────────────────────────────────────────────────────────────────────\n```\n\n<\/details>",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7656",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7656/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7656/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7656/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7656",
#> "id": 2838790312,
#> "node_id": "I_kwDOAGIUpc6pNICo",
#> "number": 7656,
#> "title": "Align the default case-sensitivity of `matches` with the regex default",
#> "user": {
#> "login": "ReedMerrill",
#> "id": 62410415,
#> "node_id": "MDQ6VXNlcjYyNDEwNDE1",
#> "avatar_url": "https://avatars.githubusercontent.com/u/62410415?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/ReedMerrill",
#> "html_url": "https://github.com/ReedMerrill",
#> "followers_url": "https://api.github.com/users/ReedMerrill/followers",
#> "following_url": "https://api.github.com/users/ReedMerrill/following{/other_user}",
#> "gists_url": "https://api.github.com/users/ReedMerrill/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/ReedMerrill/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/ReedMerrill/subscriptions",
#> "organizations_url": "https://api.github.com/users/ReedMerrill/orgs",
#> "repos_url": "https://api.github.com/users/ReedMerrill/repos",
#> "events_url": "https://api.github.com/users/ReedMerrill/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/ReedMerrill/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-02-07T18:12:09Z",
#> "updated_at": "2025-02-07T18:16:38Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "`matches` accepts a regex for pattern matching within `tidyselect` functions and, in my opinion, would therefore be more user-friendly if it had the same default case-sensitivity behaviour as regex. Right now, matches is not case sensitive. \n\nThis issue proposes switching the default value of the `ignore.case` parameter from `TRUE` to `FALSE`. I'm happy to submit a pull request, but will wait to see how much traction this issue gets.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7656/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/7656/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7655",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7655/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7655/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7655/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7655",
#> "id": 2838363441,
#> "node_id": "I_kwDOAGIUpc6pLf0x",
#> "number": 7655,
#> "title": "`slice()` shuffles datetime attributes",
#> "user": {
#> "login": "yjunechoe",
#> "id": 52832839,
#> "node_id": "MDQ6VXNlcjUyODMyODM5",
#> "avatar_url": "https://avatars.githubusercontent.com/u/52832839?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/yjunechoe",
#> "html_url": "https://github.com/yjunechoe",
#> "followers_url": "https://api.github.com/users/yjunechoe/followers",
#> "following_url": "https://api.github.com/users/yjunechoe/following{/other_user}",
#> "gists_url": "https://api.github.com/users/yjunechoe/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/yjunechoe/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/yjunechoe/subscriptions",
#> "organizations_url": "https://api.github.com/users/yjunechoe/orgs",
#> "repos_url": "https://api.github.com/users/yjunechoe/repos",
#> "events_url": "https://api.github.com/users/yjunechoe/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/yjunechoe/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-02-07T14:53:15Z",
#> "updated_at": "2025-02-07T17:22:57Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "I'm not entirely sure what's going on here but `slice()` appears to shuffle the order of `class` and `tzone` attributes of datetime columns:\n\n\n```r\nlibrary(dplyr)\ndf <- data.frame(datetime = lubridate::now(tzone = \"UTC\"))\n\nattributes(df$datetime)\n#> $class\n#> [1] \"POSIXct\" \"POSIXt\" \n#> \n#> $tzone\n#> [1] \"UTC\"\n\nattributes(slice(df, n())$datetime)\n#> $tzone\n#> [1] \"UTC\"\n#> \n#> $class\n#> [1] \"POSIXct\" \"POSIXt\"\n```\n\nThis seems specific to dplyr functions that touch rows: so `select()` and `mutate()` doesn't do this but `filter()` and `arrange()` does.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7655/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/7655/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7653",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7653/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7653/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7653/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7653",
#> "id": 2836882119,
#> "node_id": "I_kwDOAGIUpc6pF2LH",
#> "number": 7653,
#> "title": "case_when() Lacks Safe Handling for Unexpected Values",
#> "user": {
#> "login": "ja-ortiz-uniandes",
#> "id": 91100223,
#> "node_id": "MDQ6VXNlcjkxMTAwMjIz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/91100223?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/ja-ortiz-uniandes",
#> "html_url": "https://github.com/ja-ortiz-uniandes",
#> "followers_url": "https://api.github.com/users/ja-ortiz-uniandes/followers",
#> "following_url": "https://api.github.com/users/ja-ortiz-uniandes/following{/other_user}",
#> "gists_url": "https://api.github.com/users/ja-ortiz-uniandes/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/ja-ortiz-uniandes/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/ja-ortiz-uniandes/subscriptions",
#> "organizations_url": "https://api.github.com/users/ja-ortiz-uniandes/orgs",
#> "repos_url": "https://api.github.com/users/ja-ortiz-uniandes/repos",
#> "events_url": "https://api.github.com/users/ja-ortiz-uniandes/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/ja-ortiz-uniandes/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 12,
#> "created_at": "2025-02-07T00:00:29Z",
#> "updated_at": "2025-05-09T09:03:11Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Currently, `case_when()` does not provide a built-in way to validate categorical inputs and throw an error when an unexpected value is encountered. The function requires all return values to have the same type, making it impossible to safely use in cases where an unexpected value is encountered. The function is also incompatible in most cases with `stop()`.\n\nThis makes `case_when()` unsafe in cases where developers need both:\n1. A normal transformation for known values\n2. A hard error for unknown values\n\n## Reproducible Example:\n```\nlibrary(dplyr)\n\n\nreplace_func <- function(x) {\n \n case_when(\n x == \"A\" ~ 1,\n x == \"B\" ~ 2,\n x == \"C\" ~ 3,\n \n # If there is a different value I want the function to throw an error\n # and stop the execution\n .default = stop(paste0(\"Invalid value\", x))\n )\n \ndata <- tibble(x = c(\"A\", \"B\", \"A\", \"C\"))\n\n# This will throw an error - even though all values are specified in the function\ndata %>% mutate(new_x = replace_func(x))\n# Expected behavior would be to return something like:\n\n# A tibble: 4 x 2\n# x new_x\n# <chr> <dbl>\n# 1 A 1\n# 2 B 2\n# 3 A 1\n# 4 C 3\n\n\n# But for it to fail if there is a value not specified in the function\ndata1 <- tibble(x = c(\"A\", \"B\", \"A\", \"C\", \"D\"))\n\n\n# This should throw an error because the default value is stop() and the value\n# \"D\" is not specified in the function\ndata1 %>% mutate(new_x = replace_func(x))\n```\n\nCurrently, the only alternatives for handling unknown values in `case_when()` are:\n\n1. A manual check after executing `case_when()`, which is an imperfect solution with unnecessary complexity or\n2. Leaving `.default = NA`, which can lead to silent failures—an unknown value that should have been handled explicitly might be mistakenly transformed into `NA` instead of triggering an error.\n\nNeither of these solutions is ideal.\n\n## Proposed Solution\n\nI believe the default behavior should be something along the lines of `.default = stop(paste0(\"Unknown value: \", x))`. This would force users to explicitly handle unknown values within their program, ensuring safer data transformations. If users want to allow unknown values to default to `NA`, they should be required to specify it explicitly by using `.default = NA` or `TRUE ~ NA`. This approach would provide better safety by default, preventing unintended `NA` values from propagating due to missing mappings in `case_when()`.\n\nWould love to hear your thoughts on this!",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7653/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/7653/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7651",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7651/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7651/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7651/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7651",
#> "id": 2829663322,
#> "node_id": "I_kwDOAGIUpc6oqTxa",
#> "number": 7651,
#> "title": "Allow multiple arguments to `na_if`",
#> "user": {
#> "login": "nalimilan",
#> "id": 1120448,
#> "node_id": "MDQ6VXNlcjExMjA0NDg=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1120448?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/nalimilan",
#> "html_url": "https://github.com/nalimilan",
#> "followers_url": "https://api.github.com/users/nalimilan/followers",
#> "following_url": "https://api.github.com/users/nalimilan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/nalimilan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/nalimilan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/nalimilan/subscriptions",
#> "organizations_url": "https://api.github.com/users/nalimilan/orgs",
#> "repos_url": "https://api.github.com/users/nalimilan/repos",
#> "events_url": "https://api.github.com/users/nalimilan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/nalimilan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-02-04T09:57:49Z",
#> "updated_at": "2025-02-04T09:57:49Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "It's quite frequent to have to recode several distinct values to NA. So far the shortest solution I could find to do that is e.g. `na_if(na_if(vec, 88), 99)`. `if_else(vec %in% c(88, 99), NA_real_, vec)` or `case_match(vec, c(88, 99) ~ NA, .default=vec)` are also possible but relatively verbose. Could it be allowed to pass multiple arguments to `na_if ` so that one could write `na_if(vec, 88, 99)` instead?",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7651/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/7651/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7650",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7650/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7650/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7650/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7650",
#> "id": 2825224316,
#> "node_id": "I_kwDOAGIUpc6oZYB8",
#> "number": 7650,
#> "title": "set_names vs rename_with",
#> "user": {
#> "login": "ggrothendieck",
#> "id": 7840510,
#> "node_id": "MDQ6VXNlcjc4NDA1MTA=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/7840510?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/ggrothendieck",
#> "html_url": "https://github.com/ggrothendieck",
#> "followers_url": "https://api.github.com/users/ggrothendieck/followers",
#> "following_url": "https://api.github.com/users/ggrothendieck/following{/other_user}",
#> "gists_url": "https://api.github.com/users/ggrothendieck/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/ggrothendieck/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/ggrothendieck/subscriptions",
#> "organizations_url": "https://api.github.com/users/ggrothendieck/orgs",
#> "repos_url": "https://api.github.com/users/ggrothendieck/repos",
#> "events_url": "https://api.github.com/users/ggrothendieck/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/ggrothendieck/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-02-01T13:53:04Z",
#> "updated_at": "2025-02-01T13:53:04Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Is there a difference between `rlang::set_names` and `dplyr::rename_with`? Are both needed?\n\n```\nlibrary(purrr)\niris %>%\n set_names( . %>% sub(\"Petal\", \"x\", .) %>% sub(\"Sepal\", \"y\", .)) %>%\n names\n## [1] \"y.Length\" \"y.Width\" \"x.Length\" \"x.Width\" \"Species\" \n\n# same code except set_names replaced with rename_with\nlibrary(dplyr)\niris %>%\n rename_with( . %>% sub(\"Petal\", \"x\", .) %>% sub(\"Sepal\", \"y\", .)) %>%\n names\n## [1] \"y.Length\" \"y.Width\" \"x.Length\" \"x.Width\" \"Species\" \n```",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7650/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/7650/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7649",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7649/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7649/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7649/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7649",
#> "id": 2824576071,
#> "node_id": "I_kwDOAGIUpc6oW5xH",
#> "number": 7649,
#> "title": "Possible memory leak involving warnings",
#> "user": {
#> "login": "dkutner",
#> "id": 66534044,
#> "node_id": "MDQ6VXNlcjY2NTM0MDQ0",
#> "avatar_url": "https://avatars.githubusercontent.com/u/66534044?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/dkutner",
#> "html_url": "https://github.com/dkutner",
#> "followers_url": "https://api.github.com/users/dkutner/followers",
#> "following_url": "https://api.github.com/users/dkutner/following{/other_user}",
#> "gists_url": "https://api.github.com/users/dkutner/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/dkutner/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/dkutner/subscriptions",
#> "organizations_url": "https://api.github.com/users/dkutner/orgs",
#> "repos_url": "https://api.github.com/users/dkutner/repos",
#> "events_url": "https://api.github.com/users/dkutner/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/dkutner/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 3,
#> "created_at": "2025-01-31T23:37:24Z",
#> "updated_at": "2025-05-13T02:25:34Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "I recently updated my `dplyr` version (late to the party), and I'm hitting some increased memory usage. I've traced it back to how warnings are handled. Beginning in `dplyr 1.1.1`, I get the following output:\n``` r\nlibrary(dplyr)\n#> \n#> Attaching package: 'dplyr'\n#> The following objects are masked from 'package:stats':\n#> \n#> filter, lag\n#> The following objects are masked from 'package:base':\n#> \n#> intersect, setdiff, setequal, union\n\nidentity <- function(x, warn) {\n if (warn) {\n warning(\"fake warning\")\n }\n x\n}\n\ndf <- tibble::tibble(e = rep(1, 1e8))\n\nprint(gc())\n#> used (Mb) gc trigger (Mb) max used (Mb)\n#> Ncells 620941 33.2 1306337 69.8 1306337 69.8\n#> Vcells 101049658 771.0 148096356 1129.9 101084366 771.3\n\ndf <- df %>% mutate(e = identity(e, warn = TRUE))\n#> Warning: There was 1 warning in `mutate()`.\n#> ℹ In argument: `e = identity(e, warn = TRUE)`.\n#> Caused by warning in `identity()`:\n#> ! fake warning\n\nprint(gc())\n#> used (Mb) gc trigger (Mb) max used (Mb)\n#> Ncells 729780 39.0 1306337 69.8 1306337 69.8\n#> Vcells 101287706 772.8 148096356 1129.9 102369359 781.1\n\nrm(df)\nprint(gc())\n#> used (Mb) gc trigger (Mb) max used (Mb)\n#> Ncells 729742 39.0 1306337 69.8 1306337 69.8\n#> Vcells 101287654 772.8 148096356 1129.9 102369359 781.1\n```\n\n<sup>Created on 2025-01-31 with [reprex v2.0.2](https://reprex.tidyverse.org)<\/sup>\n\nIf I restart R and rerun with `warn = FALSE`, the final memory usage is only 7.9 MB rather than 772.8 MB. Additionally, if I rewrite the mutate to avoid using a pipe via `df <- mutate(df, e = identity(e, warn = TRUE))`, the final memory usage is only 8.8 MB. Switching the pipe to `|>` also yields low memory usage. Under `dplyr 1.1.0`, the above reprex yields 18.8 MB.\n\nI don't have a full appreciation for whether warnings would capture my environment, but I'm wondering if that's perhaps happening within either base R or dplyr's own record of warnings.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7649/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/7649/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7630",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7630/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7630/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7630/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7630",
#> "id": 2817394650,
#> "node_id": "I_kwDOAGIUpc6n7gfa",
#> "number": 7630,
#> "title": "`filter()` removes labels from `glue` variables",
#> "user": {
#> "login": "d-morrison",
#> "id": 2474437,
#> "node_id": "MDQ6VXNlcjI0NzQ0Mzc=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/2474437?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/d-morrison",
#> "html_url": "https://github.com/d-morrison",
#> "followers_url": "https://api.github.com/users/d-morrison/followers",
#> "following_url": "https://api.github.com/users/d-morrison/following{/other_user}",
#> "gists_url": "https://api.github.com/users/d-morrison/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/d-morrison/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/d-morrison/subscriptions",
#> "organizations_url": "https://api.github.com/users/d-morrison/orgs",
#> "repos_url": "https://api.github.com/users/d-morrison/repos",
#> "events_url": "https://api.github.com/users/d-morrison/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/d-morrison/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-01-29T06:54:40Z",
#> "updated_at": "2025-01-29T07:07:13Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Here's a reprex:\n\n``` r\nlibrary(labelled)\nlibrary(glue)\nlibrary(dplyr)\n#> \n#> Attaching package: 'dplyr'\n#> The following objects are masked from 'package:stats':\n#> \n#> filter, lag\n#> The following objects are masked from 'package:base':\n#> \n#> intersect, setdiff, setequal, union\ntest = tibble(\n a = 1 |> set_label_attribute(\"a1\"),\n b = glue::glue(\"two\") |> set_label_attribute(\"b2\")\n)\ntest$b |> get_label_attribute()\n#> [1] \"b2\"\n\n# filter() strips the variable label from column `b`\ndplyr::filter(test)$b |> get_label_attribute()\n#> NULL\n\n# filter() doesn't strip the label from column `a`\ndplyr::filter(test)$a |> get_label_attribute()\n#> [1] \"a1\"\n```\n\n<sup>Created on 2025-01-28 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\nI expected column `b` to keep its label attribute. Not sure if this is ultimately an issue with `dplyr`, `glue`, or `labelled`, but seems like it's in `dplyr`?",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7630/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/7630/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7622",
#> "id": 2769857410,
#> "node_id": "I_kwDOAGIUpc6lGKuC",
#> "number": 7622,
#> "title": "`Mutating joins` relationship documentation issues",
#> "user": {
#> "login": "bounlu",
#> "id": 17899927,
#> "node_id": "MDQ6VXNlcjE3ODk5OTI3",
#> "avatar_url": "https://avatars.githubusercontent.com/u/17899927?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/bounlu",
#> "html_url": "https://github.com/bounlu",
#> "followers_url": "https://api.github.com/users/bounlu/followers",
#> "following_url": "https://api.github.com/users/bounlu/following{/other_user}",
#> "gists_url": "https://api.github.com/users/bounlu/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/bounlu/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/bounlu/subscriptions",
#> "organizations_url": "https://api.github.com/users/bounlu/orgs",
#> "repos_url": "https://api.github.com/users/bounlu/repos",
#> "events_url": "https://api.github.com/users/bounlu/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/bounlu/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-01-06T05:32:44Z",
#> "updated_at": "2025-01-06T13:46:11Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "`Mutate-joins (dplyr)` documentation says:\n\n```\nrelationship\n\nHandling of the expected relationship between the keys of x and y. If the expectations chosen from the list below are invalidated, an error is thrown.\n\nNULL, the default, doesn't expect there to be any relationship between x and y. However, for equality joins it will check for a many-to-many relationship (which is typically unexpected) and will warn if one occurs, encouraging you to either take a closer look at your inputs or make this relationship explicit by specifying \"many-to-many\".\n\nSee the Many-to-many relationships section for more details.\n\n\"one-to-one\" expects:\nEach row in x matches at most 1 row in y.\nEach row in y matches at most 1 row in x.\n\n\"one-to-many\" expects:\nEach row in y matches at most 1 row in x.\n\n\"many-to-one\" expects:\nEach row in x matches at most 1 row in y.\n\n\"many-to-many\" doesn't perform any relationship checks, but is provided to allow you to be explicit about this relationship if you know it exists.\n\nrelationship doesn't handle cases where there are zero matches. For that, see unmatched.\n```\n\nI see there are 2 issues:\n\n1. `one-to-many` and `many-to-one` description looks awkward and reversed to me. Logically, it should specify from left to right, x -> y. So `one-to-many` should mean \"Rows in x may match multiple rows in y\". Similarly, `many-to-one` should mean \"Multiple rows in x may match same row in y\".\n\n2. Specifying `relationship` explicitly as `one-to-many` or `many-to-one` do not generate any warning or error if there is no such matching in the data, i.e. if only `one-to-one` exists. I would expect an error would be thrown if the specified relationship does not exist in the matching as the documentation says, otherwise I don't get the point of specifying the relationship explicitly.\n\nI have read [this](https://github.com/tidyverse/dplyr/pull/6753) but I believe the above issues still remain to be resolved.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7621",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7621/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7621/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7621/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7621",
#> "id": 2769423039,
#> "node_id": "I_kwDOAGIUpc6lEgq_",
#> "number": 7621,
#> "title": "More examples in `across()` documentation",
#> "user": {
#> "login": "AmeliaMN",
#> "id": 2576787,
#> "node_id": "MDQ6VXNlcjI1NzY3ODc=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/2576787?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/AmeliaMN",
#> "html_url": "https://github.com/AmeliaMN",
#> "followers_url": "https://api.github.com/users/AmeliaMN/followers",
#> "following_url": "https://api.github.com/users/AmeliaMN/following{/other_user}",
#> "gists_url": "https://api.github.com/users/AmeliaMN/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/AmeliaMN/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/AmeliaMN/subscriptions",
#> "organizations_url": "https://api.github.com/users/AmeliaMN/orgs",
#> "repos_url": "https://api.github.com/users/AmeliaMN/repos",
#> "events_url": "https://api.github.com/users/AmeliaMN/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/AmeliaMN/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 2,
#> "created_at": "2025-01-05T19:48:28Z",
#> "updated_at": "2025-01-17T16:00:34Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "When I use `across()` I almost always want to do the thing to every single column. For whatever reason, that tidyselect action is hard for me to remember/find. Is it `all()`? Is it `everything()`? Etc. It would be great to have an example in the `across()` documentation that does the thing to every column. Additionally, it would be awesome to have an example that does the thing conditionally depending on the variable type. For example, rounding all the numeric variables. ",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7621/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/7621/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7113",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7113/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7113/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7113/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7113",
#> "id": 2752730662,
#> "node_id": "PR_kwDOAGIUpc6F6eFe",
#> "number": 7113,
#> "title": "Add logic to catch single named logical expressions",
#> "user": {
#> "login": "brendensm",
#> "id": 97240544,
#> "node_id": "U_kgDOBcvF4A",
#> "avatar_url": "https://avatars.githubusercontent.com/u/97240544?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/brendensm",
#> "html_url": "https://github.com/brendensm",
#> "followers_url": "https://api.github.com/users/brendensm/followers",
#> "following_url": "https://api.github.com/users/brendensm/following{/other_user}",
#> "gists_url": "https://api.github.com/users/brendensm/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/brendensm/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/brendensm/subscriptions",
#> "organizations_url": "https://api.github.com/users/brendensm/orgs",
#> "repos_url": "https://api.github.com/users/brendensm/repos",
#> "events_url": "https://api.github.com/users/brendensm/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/brendensm/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2024-12-20T13:19:14Z",
#> "updated_at": "2024-12-20T13:19:14Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7113",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7113",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7113.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7113.patch",
#> "merged_at": {}
#> },
#> "body": "This PR would close #7105. This is a potential solution that adds logic to `check_filter`. This solution stops single, named logical expressions. \r\n\r\n```r\r\nmtcars$big_cyl <- mtcars$cyl > 4\r\n\r\nfilter(mtcars, big_cyl = TRUE) |>\r\n nrow()\r\n#> Error in `filter()`:\r\n#> ! We detected a named input.\r\n#> ℹ This usually means that you've used `=` instead of `==`.\r\n#> ℹ Did you mean `big_cyl == TRUE`?\r\n#> \r\nfilter(mtcars, big_cyl == TRUE) |>\r\n nrow()\r\n#> [1] 21\r\n#>\r\n```\r\n\r\nBut still allows for named logical vectors:\r\n\r\n```r\r\nfilters <- mtcars %>%\r\n transmute(\r\n cyl %in% 6:8,\r\n hp / drat > 50\r\n )\r\n\r\nexpect_identical(\r\n mtcars %>% filter(!!!unname(filters)),\r\n mtcars %>% filter(!!!filters)\r\n)\r\n```\r\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7113/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/7113/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7112",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7112/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7112/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7112/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7112",
#> "id": 2748696028,
#> "node_id": "I_kwDOAGIUpc6j1cXc",
#> "number": 7112,
#> "title": "`count(.by = )`",
#> "user": {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2024-12-18T20:29:48Z",
#> "updated_at": "2024-12-18T20:29:48Z",
#> "closed_at": {},
#> "author_association": "MEMBER",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "I accidentally used the syntax below, and wonder if this should be the default recommended one, or at least a supported alternative.\n\n``` r\noptions(conflicts.policy = list(warn = FALSE))\nlibrary(dplyr)\n\ntibble(a = 1:3) |>\n count(.by = a)\n#> # A tibble: 3 × 2\n#> .by n\n#> <int> <int>\n#> 1 1 1\n#> 2 2 1\n#> 3 3 1\n```\n\n<sup>Created on 2024-12-18 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\nIt took me a while to understand why there's a `.by` column in the output.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7112/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/7112/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7111",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7111/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7111/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7111/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7111",
#> "id": 2733589121,
#> "node_id": "PR_kwDOAGIUpc6E5JBO",
#> "number": 7111,
#> "title": "Update storms dataset",
#> "user": {
#> "login": "tomalrussell",
#> "id": 2762769,
#> "node_id": "MDQ6VXNlcjI3NjI3Njk=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/2762769?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/tomalrussell",
#> "html_url": "https://github.com/tomalrussell",
#> "followers_url": "https://api.github.com/users/tomalrussell/followers",
#> "following_url": "https://api.github.com/users/tomalrussell/following{/other_user}",
#> "gists_url": "https://api.github.com/users/tomalrussell/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/tomalrussell/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/tomalrussell/subscriptions",
#> "organizations_url": "https://api.github.com/users/tomalrussell/orgs",
#> "repos_url": "https://api.github.com/users/tomalrussell/repos",
#> "events_url": "https://api.github.com/users/tomalrussell/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/tomalrussell/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2024-12-11T17:39:24Z",
#> "updated_at": "2024-12-11T17:39:24Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7111",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7111",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7111.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7111.patch",
#> "merged_at": {}
#> },
#> "body": "Aiming to close #7110 - hopefully this is appropriately focussed, just updating the URL and running the update script.\r\n\r\nOne potential extension would be to include Radius of Maximum Wind, which can be interesting for parametric wind field modelling. According to the [documentation](https://www.nhc.noaa.gov/data/hurdat/hurdat2-format-atl-1851-2021.pdf) these values have been recently added, since the 2022 release, with data from the 2021 season onwards.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7111/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/7111/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7110",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7110/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7110/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7110/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7110",
#> "id": 2733565156,
#> "node_id": "I_kwDOAGIUpc6i7uTk",
#> "number": 7110,
#> "title": "Update storms dataset",
#> "user": {
#> "login": "tomalrussell",
#> "id": 2762769,
#> "node_id": "MDQ6VXNlcjI3NjI3Njk=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/2762769?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/tomalrussell",
#> "html_url": "https://github.com/tomalrussell",
#> "followers_url": "https://api.github.com/users/tomalrussell/followers",
#> "following_url": "https://api.github.com/users/tomalrussell/following{/other_user}",
#> "gists_url": "https://api.github.com/users/tomalrussell/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/tomalrussell/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/tomalrussell/subscriptions",
#> "organizations_url": "https://api.github.com/users/tomalrussell/orgs",
#> "repos_url": "https://api.github.com/users/tomalrussell/repos",
#> "events_url": "https://api.github.com/users/tomalrussell/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/tomalrussell/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2024-12-11T17:28:32Z",
#> "updated_at": "2024-12-11T17:28:32Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "As in #6000, #6320 - the [hurdat](https://www.nhc.noaa.gov/data/#hurdat) storms dataset continues to receive annual updates.\n\nI'll open a small PR in case it's still of interest to keep up with this.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7110/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/7110/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7109",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7109/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7109/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7109/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7109",
#> "id": 2725959859,
#> "node_id": "I_kwDOAGIUpc6ietiz",
#> "number": 7109,
#> "title": "Suggestion: `slice_ends()`",
#> "user": {
#> "login": "DesiQuintans",
#> "id": 3200601,
#> "node_id": "MDQ6VXNlcjMyMDA2MDE=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/3200601?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DesiQuintans",
#> "html_url": "https://github.com/DesiQuintans",
#> "followers_url": "https://api.github.com/users/DesiQuintans/followers",
#> "following_url": "https://api.github.com/users/DesiQuintans/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DesiQuintans/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DesiQuintans/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DesiQuintans/subscriptions",
#> "organizations_url": "https://api.github.com/users/DesiQuintans/orgs",
#> "repos_url": "https://api.github.com/users/DesiQuintans/repos",
#> "events_url": "https://api.github.com/users/DesiQuintans/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DesiQuintans/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2024-12-09T04:33:00Z",
#> "updated_at": "2024-12-25T15:10:28Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "I often want to know what discretising a continuous variable actually looks like in my data, so I often want to know what happens at the edges of level. Maybe this sort of thing is useful to enough other people that it's worth making a dedicated `slice_` function?\n\n``` r\nlibrary(dplyr)\n#> \n#> Attaching package: 'dplyr'\n#> The following objects are masked from 'package:stats':\n#> \n#> filter, lag\n#> The following objects are masked from 'package:base':\n#> \n#> intersect, setdiff, setequal, union\n\nset.seed(12345)\n\nx <- \n data.frame(\n age = runif(50, min = 0, max = 100)\n ) %>% \n mutate(\n age_group = \n cut(\n age,\n breaks = c(0, 18, 26, 32, 50, 60, 75, 100),\n include.lowest = TRUE\n )\n )\n \n\nx %>% \n arrange(age) %>% \n group_by(age_group) %>% \n {\n bind_rows(\n slice_head(., n = 2),\n slice_tail(., n = 2)\n ) %>% \n arrange(age)\n }\n#> # A tibble: 24 × 2\n#> # Groups: age_group [6]\n#> age age_group\n#> <dbl> <fct> \n#> 1 0.114 [0,18] \n#> 2 0.599 [0,18] \n#> 3 16.6 [0,18] \n#> 4 17.9 [0,18] \n#> 5 18.8 (18,26] \n#> 6 22.6 (18,26] \n#> 7 22.6 (18,26] \n#> 8 26.0 (18,26] \n#> 9 32.1 (32,50] \n#> 10 32.5 (32,50] \n#> # ℹ 14 more rows\n```\n\n<sup>Created on 2024-12-09 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7109/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/7109/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7108",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7108/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7108/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7108/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7108",
#> "id": 2722467994,
#> "node_id": "PR_kwDOAGIUpc6ES4Eg",
#> "number": 7108,
#> "title": "docs: typo fix",
#> "user": {
#> "login": "maelle",
#> "id": 8360597,
#> "node_id": "MDQ6VXNlcjgzNjA1OTc=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/8360597?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/maelle",
#> "html_url": "https://github.com/maelle",
#> "followers_url": "https://api.github.com/users/maelle/followers",
#> "following_url": "https://api.github.com/users/maelle/following{/other_user}",
#> "gists_url": "https://api.github.com/users/maelle/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/maelle/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/maelle/subscriptions",
#> "organizations_url": "https://api.github.com/users/maelle/orgs",
#> "repos_url": "https://api.github.com/users/maelle/repos",
#> "events_url": "https://api.github.com/users/maelle/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/maelle/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2024-12-06T09:03:03Z",
#> "updated_at": "2024-12-06T17:35:27Z",
#> "closed_at": {},
#> "author_association": "CONTRIBUTOR",
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7108",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7108",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7108.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7108.patch",
#> "merged_at": {}
#> },
#> "body": {},
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7108/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/7108/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7106",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7106/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7106/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7106/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7106",
#> "id": 2678939827,
#> "node_id": "I_kwDOAGIUpc6frWCz",
#> "number": 7106,
#> "title": "Show methods implemented by loaded packages more prominently",
#> "user": {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 674867158,
#> "node_id": "MDU6TGFiZWw2NzQ4NjcxNTg=",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/documentation",
#> "name": "documentation",
#> "color": "CBBAB8",
#> "default": true,
#> "description": ""
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2024-11-21T10:38:06Z",
#> "updated_at": "2024-11-21T19:31:27Z",
#> "closed_at": {},
#> "author_association": "MEMBER",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Example: if dbplyr is loaded, `?mutate` would contain a link to `?dbplyr::mutate.tbl_lazy` .\n\nPretty much like DBI, e.g., https://dbi.r-dbi.org/reference/dbConnect.html .\n\nRelevant for https://github.com/tidyverse/duckplyr/issues/214 and of course the existing backends.\n\nCC @maelle.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7106/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/7106/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7105",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7105/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7105/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7105/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7105",
#> "id": 2677769280,
#> "node_id": "I_kwDOAGIUpc6fm4RA",
#> "number": 7105,
#> "title": "filter should warn or prevent users from using named logical inputs",
#> "user": {
#> "login": "conig",
#> "id": 12742211,
#> "node_id": "MDQ6VXNlcjEyNzQyMjEx",
#> "avatar_url": "https://avatars.githubusercontent.com/u/12742211?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/conig",
#> "html_url": "https://github.com/conig",
#> "followers_url": "https://api.github.com/users/conig/followers",
#> "following_url": "https://api.github.com/users/conig/following{/other_user}",
#> "gists_url": "https://api.github.com/users/conig/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/conig/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/conig/subscriptions",
#> "organizations_url": "https://api.github.com/users/conig/orgs",
#> "repos_url": "https://api.github.com/users/conig/repos",
#> "events_url": "https://api.github.com/users/conig/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/conig/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2024-11-21T02:56:46Z",
#> "updated_at": "2024-11-21T02:56:46Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Currently dplyr warns users who accidentally use `=` instead of `==`. \nHowever, this does not occur if a logical is passed as the named variable.\n\n## Demonstration\n\n\n\n\n\n``` r\nlibrary(dplyr)\n\nmtcars$big_cyl <- mtcars$cyl > 4\n# Mistaking = for == silently fails, returning the whole dataset\nfilter(mtcars, big_cyl = TRUE) |>\n nrow()\n#> [1] 32\n```\nCorrectly using `==` for comparison\n```r\n# Correctly using ==.\nfilter(mtcars, big_cyl == TRUE) |>\n nrow()\n#> [1] 21\n```\n\nI think while doing `x == TRUE` is bad practice, this is bound to trip up some users and an error should be thrown.\n\n## Additional context\n\nExample of the error working correctly:\n``` r\n# version 1.1.4\ndplyr::filter(mtcars, cyl = \"4\")\n#> Error in `dplyr::filter()`:\n#> ! We detected a named input.\n#> ℹ This usually means that you've used `=` instead of `==`.\n#> ℹ Did you mean `cyl == \"4\"`?\n```\n\nInterestingly if the TRUE is in a vector the error *is* thrown.\n\n``` r\ndplyr::filter(mtcars, big_cyl = c(TRUE))\n#> Error in `dplyr::filter()`:\n#> ! We detected a named input.\n#> ℹ This usually means that you've used `=` instead of `==`.\n#> ℹ Did you mean `big_cyl == c(TRUE)`?\n```\n\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7105/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/7105/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/7683",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7683/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7683/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7683/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7683",
#> "id": 3090485528,
#> "node_id": "I_kwDOAGIUpc64NREY",
#> "number": 7683,
#> "title": "Sorting of list columns",
#> "user": {
#> "login": "lschneiderbauer",
#> "id": 422100,
#> "node_id": "MDQ6VXNlcjQyMjEwMA==",
#> "avatar_url": "https://avatars.githubusercontent.com/u/422100?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/lschneiderbauer",
#> "html_url": "https://github.com/lschneiderbauer",
#> "followers_url": "https://api.github.com/users/lschneiderbauer/followers",
#> "following_url": "https://api.github.com/users/lschneiderbauer/following{/other_user}",
#> "gists_url": "https://api.github.com/users/lschneiderbauer/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/lschneiderbauer/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/lschneiderbauer/subscriptions",
#> "organizations_url": "https://api.github.com/users/lschneiderbauer/orgs",
#> "repos_url": "https://api.github.com/users/lschneiderbauer/repos",
#> "events_url": "https://api.github.com/users/lschneiderbauer/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/lschneiderbauer/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-05-26T08:53:14Z",
#> "updated_at": "2025-05-26T08:56:09Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Currently, `arrange()` does not seem to affect list columns:\n\n``` r\nlibrary(dplyr)\n#> \n#> Attache Paket: 'dplyr'\n#> Die folgenden Objekte sind maskiert von 'package:stats':\n#> \n#> filter, lag\n#> Die folgenden Objekte sind maskiert von 'package:base':\n#> \n#> intersect, setdiff, setequal, union\n\ndf_list_sorted <-\n tibble(\n x = list(c(3, 1), c(1, 1))\n ) |>\n arrange(x)\n\ndf_list_sorted |>\n tidyr::unnest_wider(x, names_sep = \"_\")\n#> # A tibble: 2 × 2\n#> x_1 x_2\n#> <dbl> <dbl>\n#> 1 3 1\n#> 2 1 1\n```\n\n<sup>Created on 2025-05-26 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n\nShould an order be defined for list columns, so that `arrange()` actually does something?\nFor reference, duckdb defines an order on list type which seems pretty natural and universal: https://duckdb.org/docs/stable/sql/data_types/list.html#comparison-and-ordering\n> The LIST ordering is defined positionally using the following rules, where min_len = min(len(l1), len(l2)).\n> \n> Equality. l1 and l2 are equal, if for each i in [1, min_len]: l1[i] = l2[i].\n> Less Than. For the first index i in [1, min_len] where l1[i] != l2[i]: If l1[i] < l2[i], l1 is less than l2.\n\nI believe the equivalent R definition would be something along those lines:\n``` r\n`%==%` <- function(x, y) {\n min_len <- min(length(x), length(y))\n sub <- seq(1, min_len)\n\n all(x[sub] == y[sub])\n}\n\n`%<%` <- function(x, y) {\n min_len <- min(length(x), length(y))\n sub <- seq(1, min_len)\n\n i <- head(which(x[sub] != y[sub]), n = 1L)\n\n if (length(i) < 1) {\n return(FALSE)\n } else {\n x[[i]] < y[[i]]\n }\n}\n\n`%<=%` <- function(x, y) {\n (x %<% y) || (x %==% y)\n}\n\n# One maybe wants to sort w.r.t. to the `%<=%` operator?\n# Examples:\n\nc(3, 1) %<=% c(1, 1)\n#> [1] FALSE\n\nc(1, 1) %<=% c(3, 1)\n#> [1] TRUE\n\nc(1, 3) %<=% c(3, 1)\n#> [1] TRUE\n\nc(1, 1) %<=% c(1, 1)\n#> [1] TRUE\n```\n\n<sup>Created on 2025-05-26 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n\nShould `arrange()` sort w.r.t. to `%<=%` when used on list columns?",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7683/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/7683/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7682",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7682/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7682/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7682/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7682",
#> "id": 3052748220,
#> "node_id": "I_kwDOAGIUpc619T28",
#> "number": 7682,
#> "title": "Allowing `join_by()` in `rows_update()` and friends",
#> "user": {
#> "login": "jl5000",
#> "id": 26303390,
#> "node_id": "MDQ6VXNlcjI2MzAzMzkw",
#> "avatar_url": "https://avatars.githubusercontent.com/u/26303390?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/jl5000",
#> "html_url": "https://github.com/jl5000",
#> "followers_url": "https://api.github.com/users/jl5000/followers",
#> "following_url": "https://api.github.com/users/jl5000/following{/other_user}",
#> "gists_url": "https://api.github.com/users/jl5000/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/jl5000/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/jl5000/subscriptions",
#> "organizations_url": "https://api.github.com/users/jl5000/orgs",
#> "repos_url": "https://api.github.com/users/jl5000/repos",
#> "events_url": "https://api.github.com/users/jl5000/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/jl5000/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-05-09T17:16:54Z",
#> "updated_at": "2025-05-09T17:16:54Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Currently a `join_by()` specification can only be used in mutating and filtering joins. Would it be possible to allow its use in `rows_update()` and related functions? These functions have a `by` argument which can only take a character vector.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7682/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/7682/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7681",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7681/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7681/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7681/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7681",
#> "id": 3037098251,
#> "node_id": "PR_kwDOAGIUpc6Uz1iI",
#> "number": 7681,
#> "title": "fix typos",
#> "user": {
#> "login": "musvaage",
#> "id": 112724366,
#> "node_id": "U_kgDOBrgJjg",
#> "avatar_url": "https://avatars.githubusercontent.com/u/112724366?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/musvaage",
#> "html_url": "https://github.com/musvaage",
#> "followers_url": "https://api.github.com/users/musvaage/followers",
#> "following_url": "https://api.github.com/users/musvaage/following{/other_user}",
#> "gists_url": "https://api.github.com/users/musvaage/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/musvaage/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/musvaage/subscriptions",
#> "organizations_url": "https://api.github.com/users/musvaage/orgs",
#> "repos_url": "https://api.github.com/users/musvaage/repos",
#> "events_url": "https://api.github.com/users/musvaage/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/musvaage/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-05-03T02:29:21Z",
#> "updated_at": "2025-05-03T02:29:21Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7681",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7681",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7681.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7681.patch",
#> "merged_at": {}
#> },
#> "body": "dumped repo strings exposed a couple of typos",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7681/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/7681/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7680",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7680/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7680/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7680/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7680",
#> "id": 3014574689,
#> "node_id": "I_kwDOAGIUpc6zrsJh",
#> "number": 7680,
#> "title": "Error installing dplyr@1.1.4 with R 4.5.0 on MacOS 15.3.2",
#> "user": {
#> "login": "devster31",
#> "id": 1912062,
#> "node_id": "MDQ6VXNlcjE5MTIwNjI=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1912062?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/devster31",
#> "html_url": "https://github.com/devster31",
#> "followers_url": "https://api.github.com/users/devster31/followers",
#> "following_url": "https://api.github.com/users/devster31/following{/other_user}",
#> "gists_url": "https://api.github.com/users/devster31/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/devster31/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/devster31/subscriptions",
#> "organizations_url": "https://api.github.com/users/devster31/orgs",
#> "repos_url": "https://api.github.com/users/devster31/repos",
#> "events_url": "https://api.github.com/users/devster31/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/devster31/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 3,
#> "created_at": "2025-04-23T16:18:26Z",
#> "updated_at": "2025-04-23T17:23:55Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Hello,\nI'm trying to install `dplyr`.\nBelow some info on my system:\n```\n➜ R --version\nR version 4.5.0 (2025-04-11) -- \"How About a Twenty-Six\"\nCopyright (C) 2025 The R Foundation for Statistical Computing\nPlatform: x86_64-apple-darwin23.6.0\n\n➜ clang -v\nApple clang version 16.0.0 (clang-1600.0.26.6)\nTarget: x86_64-apple-darwin24.3.0\nThread model: posix\nInstalledDir: /Library/Developer/CommandLineTools/usr/bin\n```\nAnd the error:\n```\napertura URL 'https://cloud.r-project.org/src/contrib/dplyr_1.1.4.tar.gz'\nContent type 'application/x-gzip' length 1207521 bytes (1.2 MB)\n==================================================\ndownloaded 1.2 MB\n\n* installing *source* package ‘dplyr’ ...\n** this is package ‘dplyr’ version ‘1.1.4’\n** pacchetto ‘dplyr’ aperto con successo con controllo somme MD5\n** using staged installation\n** libs\ncon compilatore C++: ‘Apple clang version 16.0.0 (clang-1600.0.26.6)’\ncon SDK: ‘MacOSX15.2.sdk’\nclang++ -std=gnu++17 -I\"/usr/local/Cellar/r/4.5.0/lib/R/include\" -DNDEBUG -I/usr/local/opt/gettext/include -I/usr/local/opt/readline/include -I/usr/local/opt/xz/include -I/usr/local/include -fPIC -g -O2 -c chop.cpp -o chop.o\nIn file included from chop.cpp:1:\nIn file included from ./dplyr.h:5:\n/usr/local/Cellar/r/4.5.0/lib/R/include/R.h:39:11: fatal error: 'cstdlib' file not found\n 39 | # include <cstdlib>\n | ^~~~~~~~~\n1 error generated.\nmake: *** [chop.o] Error 1\nERROR: compilation failed for package ‘dplyr’\n* removing ‘/usr/local/lib/R/4.5/site-library/dplyr’\n\nI pacchetti scaricati con il codice sorgente sono in\n\t‘/private/var/folders/ln/r_c5vx295nd751vpyxq94bd80000gn/T/Rtmp3oGKC7/downloaded_packages’\nMessaggio di avvertimento:\nIn install.packages(\"dplyr\") :\n l'installazione del pacchetto ‘dplyr’ ha uno stato di uscita non-zero\n```\nMy `~/.R/Makevars` file is empty right now.\n\nAny tips on how to fix?",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7680/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/7680/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7677",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7677/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7677/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7677/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7677",
#> "id": 3000068668,
#> "node_id": "PR_kwDOAGIUpc6S3OfK",
#> "number": 7677,
#> "title": "Revdepcheck results",
#> "user": {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-04-16T15:51:56Z",
#> "updated_at": "2025-04-16T15:51:56Z",
#> "closed_at": {},
#> "author_association": "MEMBER",
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7677",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7677",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7677.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7677.patch",
#> "merged_at": {}
#> },
#> "body": "An interesting problem with `case_when()` and arrays.\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7677/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/7677/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7676",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7676/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7676/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7676/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7676",
#> "id": 2992153280,
#> "node_id": "PR_kwDOAGIUpc6ScG92",
#> "number": 7676,
#> "title": "Use {palmerpenguins} dataset in arrange() examples",
#> "user": {
#> "login": "KittJonathan",
#> "id": 70012823,
#> "node_id": "MDQ6VXNlcjcwMDEyODIz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/70012823?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/KittJonathan",
#> "html_url": "https://github.com/KittJonathan",
#> "followers_url": "https://api.github.com/users/KittJonathan/followers",
#> "following_url": "https://api.github.com/users/KittJonathan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/KittJonathan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/KittJonathan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/KittJonathan/subscriptions",
#> "organizations_url": "https://api.github.com/users/KittJonathan/orgs",
#> "repos_url": "https://api.github.com/users/KittJonathan/repos",
#> "events_url": "https://api.github.com/users/KittJonathan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/KittJonathan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 5,
#> "created_at": "2025-04-14T07:32:46Z",
#> "updated_at": "2025-04-16T13:36:33Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7676",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7676",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7676.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7676.patch",
#> "merged_at": {}
#> },
#> "body": "I added examples using the penguins dataset in the arrange() documentation \r\n+ added {palmerpenguins} to suggests in the dplyr DESCRIPTION file",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7676/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/7676/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7673",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7673/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7673/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7673/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7673",
#> "id": 2968525786,
#> "node_id": "I_kwDOAGIUpc6w8Bva",
#> "number": 7673,
#> "title": "select() function documentation",
#> "user": {
#> "login": "KittJonathan",
#> "id": 70012823,
#> "node_id": "MDQ6VXNlcjcwMDEyODIz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/70012823?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/KittJonathan",
#> "html_url": "https://github.com/KittJonathan",
#> "followers_url": "https://api.github.com/users/KittJonathan/followers",
#> "following_url": "https://api.github.com/users/KittJonathan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/KittJonathan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/KittJonathan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/KittJonathan/subscriptions",
#> "organizations_url": "https://api.github.com/users/KittJonathan/orgs",
#> "repos_url": "https://api.github.com/users/KittJonathan/repos",
#> "events_url": "https://api.github.com/users/KittJonathan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/KittJonathan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-04-03T06:54:28Z",
#> "updated_at": "2025-04-03T06:54:28Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Hello there,\n\nGoing through the dplyr functions docs for a course prep, and I found the doc for the select() function quite confusing with the two datasets used, starwars and iris, especially with the use of pivot_...() functions in the select() doc.\n\nI would, personally, find the doc easier to read and understand if the mentions of the pivot_...() functions were limited to the corresponding doc.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7673/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/7673/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7671",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7671/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7671/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7671/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7671",
#> "id": 2966907876,
#> "node_id": "I_kwDOAGIUpc6w12vk",
#> "number": 7671,
#> "title": "Introduction to dplyr article - slice_max() and slice_min()",
#> "user": {
#> "login": "KittJonathan",
#> "id": 70012823,
#> "node_id": "MDQ6VXNlcjcwMDEyODIz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/70012823?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/KittJonathan",
#> "html_url": "https://github.com/KittJonathan",
#> "followers_url": "https://api.github.com/users/KittJonathan/followers",
#> "following_url": "https://api.github.com/users/KittJonathan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/KittJonathan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/KittJonathan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/KittJonathan/subscriptions",
#> "organizations_url": "https://api.github.com/users/KittJonathan/orgs",
#> "repos_url": "https://api.github.com/users/KittJonathan/repos",
#> "events_url": "https://api.github.com/users/KittJonathan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/KittJonathan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-04-02T16:03:21Z",
#> "updated_at": "2025-04-02T16:03:21Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Hello there!\n\nWhile reading the \"Introduction to dplyr\" article ([here](https://dplyr.tidyverse.org/articles/dplyr.html)), I came across something that I think would need correcting : in the part on the [slice functions](https://dplyr.tidyverse.org/articles/dplyr.html#choose-rows-using-their-position-with-slice), it's noted that\n\n> [slice_min()](https://dplyr.tidyverse.org/reference/slice.html) and [slice_max()](https://dplyr.tidyverse.org/reference/slice.html) select rows with highest or lowest values of a variable. Note that we first must choose only the values which are not NA.\n\nI tried running the code without filtering out NAs for the variable of interest, and it seems to work : \n\n`starwars |> slice_max(height, n = 3)` and `starwars |> filter(!is.na(height)) |> slice_max(height, n = 3)` return the same result.\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7671/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/7671/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7668",
#> "id": 2905299014,
#> "node_id": "I_kwDOAGIUpc6tK1hG",
#> "number": 7668,
#> "title": "`tbl_vars()` accesses `nrow()` unnecessarily",
#> "user": {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-03-09T09:04:12Z",
#> "updated_at": "2025-03-09T09:04:12Z",
#> "closed_at": {},
#> "author_association": "MEMBER",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "This currently affects joins with `library(duckplyr)` . I can work around, perhaps we find a nicer way.\n\nDifficult to show with current duckplyr because we have our `group_vars()` method. The calling sequence goes as follows:\n\n- `tbl_vars()` calls `group_vars()` in the generic\n- `group_vars.data.frame()` calls `names(group_data())`\n- `group_data()` needs `nrow()`\n\nPerhaps we can implement an ALTREP solution for `group_vars()` ? Or add an argument to `group_data()` that indicates we really only care about the names?\n\nRelevant backtrace from a debugging session:\n\n```\nBacktrace:\n ▆\n 1. ├─testthat::expect_error(...) at test-tpch.R:245:3\n 2. │ └─testthat:::expect_condition_matching(...)\n 3. │ └─testthat:::quasi_capture(...)\n 4. │ ├─testthat (local) .capture(...)\n 5. │ │ └─base::withCallingHandlers(...)\n 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo))\n 7. └─duckplyr:::tpch_02() at test-tpch.R:247:5\n 8. ├─dplyr::inner_join(na_matches = TPCH_NA_MATCHES, p, ps, by = c(p_partkey = \"ps_partkey\")) at duckplyr/R/tpch.R:35:3\n 9. └─duckplyr (local) inner_join.data.frame(na_matches = TPCH_NA_MATCHES, p, ps, by = c(p_partkey = \"ps_partkey\"))\n 10. ├─duckplyr:::rel_try(...) at duckplyr/R/inner_join.R:10:3\n 11. │ └─base::force(rel) at duckplyr/R/relational.R:62:5\n 12. └─duckplyr:::rel_join_impl(...) at duckplyr/R/inner_join.R:22:7\n 13. └─duckplyr:::tbl_vars_safe(x) at duckplyr/R/join.R:19:3\n 14. └─dplyr::tbl_vars(x) at duckplyr/R/join.R:142:3\n 15. ├─dplyr:::new_sel_vars(tbl_vars_dispatch(x), group_vars(x))\n 16. │ └─base::structure(...)\n 17. ├─dplyr::group_vars(x)\n 18. └─dplyr:::group_vars.data.frame(x)\n 19. ├─generics::setdiff(names(group_data(x)), \".rows\")\n 20. ├─dplyr::group_data(x)\n 21. └─dplyr:::group_data.data.frame(x)\n 22. └─base::nrow(.data)\n 23. ├─base::dim(x)\n 24. └─base::dim.data.frame(x)\n 25. └─base::.row_names_info(x, 2L)\n```",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7668/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7667",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7667/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7667/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7667/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7667",
#> "id": 2888866524,
#> "node_id": "I_kwDOAGIUpc6sMJrc",
#> "number": 7667,
#> "title": "Move `reframe()` out of the experimental stage",
#> "user": {
#> "login": "DavisVaughan",
#> "id": 19150088,
#> "node_id": "MDQ6VXNlcjE5MTUwMDg4",
#> "avatar_url": "https://avatars.githubusercontent.com/u/19150088?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DavisVaughan",
#> "html_url": "https://github.com/DavisVaughan",
#> "followers_url": "https://api.github.com/users/DavisVaughan/followers",
#> "following_url": "https://api.github.com/users/DavisVaughan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DavisVaughan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DavisVaughan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DavisVaughan/subscriptions",
#> "organizations_url": "https://api.github.com/users/DavisVaughan/orgs",
#> "repos_url": "https://api.github.com/users/DavisVaughan/repos",
#> "events_url": "https://api.github.com/users/DavisVaughan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DavisVaughan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-03-01T12:27:18Z",
#> "updated_at": "2025-03-01T12:27:18Z",
#> "closed_at": {},
#> "author_association": "MEMBER",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": {},
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7667/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/7667/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7665",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7665/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7665/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7665/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7665",
#> "id": 2880898418,
#> "node_id": "I_kwDOAGIUpc6rtwVy",
#> "number": 7665,
#> "title": "Keep the column attribute label in `bind_rows`",
#> "user": {
#> "login": "ynsec37",
#> "id": 98389771,
#> "node_id": "U_kgDOBd1PCw",
#> "avatar_url": "https://avatars.githubusercontent.com/u/98389771?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/ynsec37",
#> "html_url": "https://github.com/ynsec37",
#> "followers_url": "https://api.github.com/users/ynsec37/followers",
#> "following_url": "https://api.github.com/users/ynsec37/following{/other_user}",
#> "gists_url": "https://api.github.com/users/ynsec37/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/ynsec37/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/ynsec37/subscriptions",
#> "organizations_url": "https://api.github.com/users/ynsec37/orgs",
#> "repos_url": "https://api.github.com/users/ynsec37/repos",
#> "events_url": "https://api.github.com/users/ynsec37/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/ynsec37/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-02-26T09:35:44Z",
#> "updated_at": "2025-02-26T09:35:44Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "The `bind_rows` output miss the label of column as shown in the below\n``` r\nlibrary(dplyr, warn.conflicts = FALSE)\n\npackageVersion(\"dplyr\")\n#> [1] '1.1.4'\n\ndf1 <- tibble(x = 1:2, y = letters[1:2])\ndf2 <- tibble(x = 4:5, z = 1:2)\n\nattr(df1$x, \"label\") <- \"df1 lable x\"\nattr(df2$x, \"label\") <- \"df2 lable x\"\n\n\noutput1 <- bind_rows(list(df1, df2))\nattributes(output1$x)\n#> NULL\n\noutput2 <- data.table::rbindlist(list(df1, df2), use.names = TRUE, fill = TRUE) |>\n as.data.frame()\nattributes(output2$x)\n#> $label\n#> [1] \"df1 lable x\"\n\noutput3 <- data.table::rbindlist(list(df2, df1), use.names = TRUE, fill = TRUE) |>\n as.data.frame()\nattributes(output3$x)\n#> $label\n#> [1] \"df2 lable x\"\n```\n\n<sup>Created on 2025-02-26 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7665/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/7665/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7663",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7663/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7663/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7663/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7663",
#> "id": 2867479942,
#> "node_id": "I_kwDOAGIUpc6q6kWG",
#> "number": 7663,
#> "title": "mutate() doesn't seem to signal warning conditions properly",
#> "user": {
#> "login": "jmbarbone",
#> "id": 38573843,
#> "node_id": "MDQ6VXNlcjM4NTczODQz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/38573843?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/jmbarbone",
#> "html_url": "https://github.com/jmbarbone",
#> "followers_url": "https://api.github.com/users/jmbarbone/followers",
#> "following_url": "https://api.github.com/users/jmbarbone/following{/other_user}",
#> "gists_url": "https://api.github.com/users/jmbarbone/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/jmbarbone/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/jmbarbone/subscriptions",
#> "organizations_url": "https://api.github.com/users/jmbarbone/orgs",
#> "repos_url": "https://api.github.com/users/jmbarbone/repos",
#> "events_url": "https://api.github.com/users/jmbarbone/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/jmbarbone/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 2,
#> "created_at": "2025-02-20T23:10:21Z",
#> "updated_at": "2025-02-21T15:27:49Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "`mutate()` doesn't seem to signal named warning conditions for calling handlers to pick up.\n\nExample: function emits a custom condition, and that specific class can't be suppressed.\n\n``` r\nlibrary(dplyr, warn.conflicts = FALSE)\n\nfoo_warn <- function(x) {\n warning(my_warning)\n x\n}\n\nmy_warning <- structure(\n list(message = \"MY_WARNING\", call = NULL),\n class = c(\"my_warning\", \"warning\", \"condition\")\n)\n\ndf <- data.frame(x = 1, y = 2)\n\nsuppressWarnings(\n mutate(df, x = foo_warn(x)),\n \"my_warning\"\n)\n#> Warning: There was 1 warning in `mutate()`.\n#> ℹ In argument: `x = foo_warn(x)`.\n#> Caused by warning:\n#> ! MY_WARNING\n#> x y\n#> 1 1 2\n\n# my_warningis never signaled, handlers can't pick it up\nwithCallingHandlers(\n mutate(df, x = foo_warn(x)),\n my_warning = function(c) {\n stop(\"condition signaled\")\n }\n)\n#> Warning: There was 1 warning in `mutate()`.\n#> ℹ In argument: `x = foo_warn(x)`.\n#> Caused by warning:\n#> ! MY_WARNING\n#> x y\n#> 1 1 2\n\n# but removing the `warning` class is at least a work-around\n# \nfoo_cond <- function(x) {\n warning(my_condition)\n x\n}\n\nmy_condition <- structure(\n list(message = \"MY_CONDITION\", call = NULL),\n class = c(\"my_condition\", \"condition\")\n)\n\nwithCallingHandlers(\n mutate(df, x = foo_cond(x)),\n my_condition = function(c) {\n stop(\"condition signaled\")\n }\n)\n#> Error in (function (c) : condition signaled\n```\n\n<sup>Created on 2025-02-20 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7663/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/7663/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7657",
#> "id": 2848600494,
#> "node_id": "I_kwDOAGIUpc6pyjGu",
#> "number": 7657,
#> "title": "reframe with across returns an unhelpful error message",
#> "user": {
#> "login": "const-ae",
#> "id": 5359014,
#> "node_id": "MDQ6VXNlcjUzNTkwMTQ=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/5359014?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/const-ae",
#> "html_url": "https://github.com/const-ae",
#> "followers_url": "https://api.github.com/users/const-ae/followers",
#> "following_url": "https://api.github.com/users/const-ae/following{/other_user}",
#> "gists_url": "https://api.github.com/users/const-ae/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/const-ae/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/const-ae/subscriptions",
#> "organizations_url": "https://api.github.com/users/const-ae/orgs",
#> "repos_url": "https://api.github.com/users/const-ae/repos",
#> "events_url": "https://api.github.com/users/const-ae/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/const-ae/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 17708198,
#> "node_id": "MDU6TGFiZWwxNzcwODE5OA==",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/bug",
#> "name": "bug",
#> "color": "E0B3A2",
#> "default": true,
#> "description": "an unexpected problem or unintended behavior"
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-02-12T15:28:36Z",
#> "updated_at": "2025-02-12T17:20:55Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "When I call `reframe` with `across` and the length of the output is not consistent, the error message is a lot less helpful if the output of `across` is not named:\n\n``` r\nlibrary(tidyverse)\ntibble(x = 1:3, y = 4:6) |>\n reframe(test = across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in `reframe()`:\n#> ℹ In argument: `test = across(...)`.\n#> Caused by error in `across()`:\n#> ! Can't recycle `..1` (size 3) to match `..2` (size 12).\n\ntibble(x = 1:3, y = 4:6) |>\n reframe(across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in names(dots)[[i]]: subscript out of bounds\n```\n\n<sup>Created on 2025-02-12 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\nThe situation is slightly better with `mutate`:\n\n``` r\nlibrary(tidyverse)\ntibble(x = 1:3, y = 4:6) |>\n mutate(test = across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in `mutate()`:\n#> ℹ In argument: `test = across(...)`.\n#> Caused by error in `across()`:\n#> ! Can't recycle `..1` (size 3) to match `..2` (size 12).\n\ntibble(x = 1:3, y = 4:6) |>\n mutate(across(everything(), \\(x){\n rep(letters[x], each = x)\n }))\n#> Error in `mutate()`:\n#> ℹ In argument: `across(...)`.\n#> Caused by error in `across()`:\n#> ! Can't compute column `y`.\n#> Caused by error in `dplyr_internal_error()`:\n```\n\n<sup>Created on 2025-02-12 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\n<details style=\"margin-bottom:10px;\">\n<summary>\nSession info\n<\/summary>\n\n``` r\nsessioninfo::session_info()\n#> ─ Session info ───────────────────────────────────────────────────────────────\n#> setting value\n#> version R version 4.4.1 (2024-06-14)\n#> os macOS Sonoma 14.6\n#> system aarch64, darwin20\n#> ui X11\n#> language (EN)\n#> collate en_US.UTF-8\n#> ctype en_US.UTF-8\n#> tz Europe/London\n#> date 2025-02-12\n#> pandoc 3.2 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)\n#> \n#> ─ Packages ───────────────────────────────────────────────────────────────────\n#> ! package * version date (UTC) lib source\n#> P cli 3.6.3 2024-06-21 [?] CRAN (R 4.4.0)\n#> P colorspace 2.1-1 2024-07-26 [?] CRAN (R 4.4.0)\n#> P digest 0.6.37 2024-08-19 [?] CRAN (R 4.4.1)\n#> P dplyr * 1.1.4 2023-11-17 [?] CRAN (R 4.4.0)\n#> P evaluate 1.0.3 2025-01-10 [?] CRAN (R 4.4.1)\n#> P fansi 1.0.6 2023-12-08 [?] CRAN (R 4.4.0)\n#> P fastmap 1.2.0 2024-05-15 [?] CRAN (R 4.4.0)\n#> P forcats * 1.0.0 2023-01-29 [?] CRAN (R 4.4.0)\n#> P fs 1.6.5 2024-10-30 [?] CRAN (R 4.4.1)\n#> P generics 0.1.3 2022-07-05 [?] CRAN (R 4.4.0)\n#> P ggplot2 * 3.5.1 2024-04-23 [?] CRAN (R 4.4.0)\n#> P glue 1.8.0 2024-09-30 [?] CRAN (R 4.4.1)\n#> P gtable 0.3.6 2024-10-25 [?] CRAN (R 4.4.1)\n#> P hms 1.1.3 2023-03-21 [?] CRAN (R 4.4.0)\n#> P htmltools 0.5.8.1 2024-04-04 [?] CRAN (R 4.4.0)\n#> P knitr 1.49 2024-11-08 [?] CRAN (R 4.4.1)\n#> P lifecycle 1.0.4 2023-11-07 [?] CRAN (R 4.4.0)\n#> P lubridate * 1.9.3 2023-09-27 [?] CRAN (R 4.4.0)\n#> P magrittr 2.0.3 2022-03-30 [?] CRAN (R 4.4.0)\n#> P munsell 0.5.1 2024-04-01 [?] CRAN (R 4.4.0)\n#> P pillar 1.9.0 2023-03-22 [?] CRAN (R 4.4.0)\n#> P pkgconfig 2.0.3 2019-09-22 [?] CRAN (R 4.4.0)\n#> P purrr * 1.0.2 2023-08-10 [?] CRAN (R 4.4.0)\n#> P R6 2.5.1 2021-08-19 [?] CRAN (R 4.4.0)\n#> P readr * 2.1.5 2024-01-10 [?] CRAN (R 4.4.0)\n#> P reprex 2.1.1 2024-07-06 [?] CRAN (R 4.4.0)\n#> P rlang 1.1.4 2024-06-04 [?] CRAN (R 4.4.0)\n#> P rmarkdown 2.29 2024-11-04 [?] CRAN (R 4.4.1)\n#> P rstudioapi 0.17.1 2024-10-22 [?] CRAN (R 4.4.1)\n#> P scales 1.3.0 2023-11-28 [?] CRAN (R 4.4.0)\n#> P sessioninfo 1.2.2 2021-12-06 [?] CRAN (R 4.4.0)\n#> P stringi 1.8.4 2024-05-06 [?] CRAN (R 4.4.0)\n#> P stringr * 1.5.1 2023-11-14 [?] CRAN (R 4.4.0)\n#> P tibble * 3.2.1 2023-03-20 [?] CRAN (R 4.4.0)\n#> P tidyr * 1.3.1 2024-01-24 [?] CRAN (R 4.4.0)\n#> P tidyselect 1.2.1 2024-03-11 [?] CRAN (R 4.4.0)\n#> P tidyverse * 2.0.0 2023-02-22 [?] CRAN (R 4.4.0)\n#> P timechange 0.3.0 2024-01-18 [?] CRAN (R 4.4.0)\n#> P tzdb 0.4.0 2023-05-12 [?] CRAN (R 4.4.0)\n#> P utf8 1.2.4 2023-10-22 [?] CRAN (R 4.4.0)\n#> P vctrs 0.6.5 2023-12-01 [?] CRAN (R 4.4.0)\n#> P withr 3.0.2 2024-10-28 [?] CRAN (R 4.4.1)\n#> P xfun 0.50 2025-01-07 [?] CRAN (R 4.4.1)\n#> P yaml 2.3.10 2024-07-26 [?] CRAN (R 4.4.0)\n#> \n#> [1] /Users/ahlmanne/Documents/Work_Projects/precancer-atlas-code/renv/library/macos/R-4.4/aarch64-apple-darwin20\n#> [2] /Users/ahlmanne/Library/Caches/org.R-project.R/R/renv/sandbox/macos/R-4.4/aarch64-apple-darwin20/f7156815\n#> [3] /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library\n#> \n#> P ── Loaded and on-disk path mismatch.\n#> \n#> ──────────────────────────────────────────────────────────────────────────────\n```\n\n<\/details>",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7657/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7656",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7656/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7656/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7656/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7656",
#> "id": 2838790312,
#> "node_id": "I_kwDOAGIUpc6pNICo",
#> "number": 7656,
#> "title": "Align the default case-sensitivity of `matches` with the regex default",
#> "user": {
#> "login": "ReedMerrill",
#> "id": 62410415,
#> "node_id": "MDQ6VXNlcjYyNDEwNDE1",
#> "avatar_url": "https://avatars.githubusercontent.com/u/62410415?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/ReedMerrill",
#> "html_url": "https://github.com/ReedMerrill",
#> "followers_url": "https://api.github.com/users/ReedMerrill/followers",
#> "following_url": "https://api.github.com/users/ReedMerrill/following{/other_user}",
#> "gists_url": "https://api.github.com/users/ReedMerrill/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/ReedMerrill/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/ReedMerrill/subscriptions",
#> "organizations_url": "https://api.github.com/users/ReedMerrill/orgs",
#> "repos_url": "https://api.github.com/users/ReedMerrill/repos",
#> "events_url": "https://api.github.com/users/ReedMerrill/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/ReedMerrill/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-02-07T18:12:09Z",
#> "updated_at": "2025-02-07T18:16:38Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "`matches` accepts a regex for pattern matching within `tidyselect` functions and, in my opinion, would therefore be more user-friendly if it had the same default case-sensitivity behaviour as regex. Right now, matches is not case sensitive. \n\nThis issue proposes switching the default value of the `ignore.case` parameter from `TRUE` to `FALSE`. I'm happy to submit a pull request, but will wait to see how much traction this issue gets.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7656/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/7656/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7655",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7655/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7655/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7655/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7655",
#> "id": 2838363441,
#> "node_id": "I_kwDOAGIUpc6pLf0x",
#> "number": 7655,
#> "title": "`slice()` shuffles datetime attributes",
#> "user": {
#> "login": "yjunechoe",
#> "id": 52832839,
#> "node_id": "MDQ6VXNlcjUyODMyODM5",
#> "avatar_url": "https://avatars.githubusercontent.com/u/52832839?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/yjunechoe",
#> "html_url": "https://github.com/yjunechoe",
#> "followers_url": "https://api.github.com/users/yjunechoe/followers",
#> "following_url": "https://api.github.com/users/yjunechoe/following{/other_user}",
#> "gists_url": "https://api.github.com/users/yjunechoe/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/yjunechoe/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/yjunechoe/subscriptions",
#> "organizations_url": "https://api.github.com/users/yjunechoe/orgs",
#> "repos_url": "https://api.github.com/users/yjunechoe/repos",
#> "events_url": "https://api.github.com/users/yjunechoe/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/yjunechoe/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-02-07T14:53:15Z",
#> "updated_at": "2025-02-07T17:22:57Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "I'm not entirely sure what's going on here but `slice()` appears to shuffle the order of `class` and `tzone` attributes of datetime columns:\n\n\n```r\nlibrary(dplyr)\ndf <- data.frame(datetime = lubridate::now(tzone = \"UTC\"))\n\nattributes(df$datetime)\n#> $class\n#> [1] \"POSIXct\" \"POSIXt\" \n#> \n#> $tzone\n#> [1] \"UTC\"\n\nattributes(slice(df, n())$datetime)\n#> $tzone\n#> [1] \"UTC\"\n#> \n#> $class\n#> [1] \"POSIXct\" \"POSIXt\"\n```\n\nThis seems specific to dplyr functions that touch rows: so `select()` and `mutate()` doesn't do this but `filter()` and `arrange()` does.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7655/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/7655/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7653",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7653/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7653/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7653/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7653",
#> "id": 2836882119,
#> "node_id": "I_kwDOAGIUpc6pF2LH",
#> "number": 7653,
#> "title": "case_when() Lacks Safe Handling for Unexpected Values",
#> "user": {
#> "login": "ja-ortiz-uniandes",
#> "id": 91100223,
#> "node_id": "MDQ6VXNlcjkxMTAwMjIz",
#> "avatar_url": "https://avatars.githubusercontent.com/u/91100223?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/ja-ortiz-uniandes",
#> "html_url": "https://github.com/ja-ortiz-uniandes",
#> "followers_url": "https://api.github.com/users/ja-ortiz-uniandes/followers",
#> "following_url": "https://api.github.com/users/ja-ortiz-uniandes/following{/other_user}",
#> "gists_url": "https://api.github.com/users/ja-ortiz-uniandes/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/ja-ortiz-uniandes/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/ja-ortiz-uniandes/subscriptions",
#> "organizations_url": "https://api.github.com/users/ja-ortiz-uniandes/orgs",
#> "repos_url": "https://api.github.com/users/ja-ortiz-uniandes/repos",
#> "events_url": "https://api.github.com/users/ja-ortiz-uniandes/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/ja-ortiz-uniandes/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 12,
#> "created_at": "2025-02-07T00:00:29Z",
#> "updated_at": "2025-05-09T09:03:11Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Currently, `case_when()` does not provide a built-in way to validate categorical inputs and throw an error when an unexpected value is encountered. The function requires all return values to have the same type, making it impossible to safely use in cases where an unexpected value is encountered. The function is also incompatible in most cases with `stop()`.\n\nThis makes `case_when()` unsafe in cases where developers need both:\n1. A normal transformation for known values\n2. A hard error for unknown values\n\n## Reproducible Example:\n```\nlibrary(dplyr)\n\n\nreplace_func <- function(x) {\n \n case_when(\n x == \"A\" ~ 1,\n x == \"B\" ~ 2,\n x == \"C\" ~ 3,\n \n # If there is a different value I want the function to throw an error\n # and stop the execution\n .default = stop(paste0(\"Invalid value\", x))\n )\n \ndata <- tibble(x = c(\"A\", \"B\", \"A\", \"C\"))\n\n# This will throw an error - even though all values are specified in the function\ndata %>% mutate(new_x = replace_func(x))\n# Expected behavior would be to return something like:\n\n# A tibble: 4 x 2\n# x new_x\n# <chr> <dbl>\n# 1 A 1\n# 2 B 2\n# 3 A 1\n# 4 C 3\n\n\n# But for it to fail if there is a value not specified in the function\ndata1 <- tibble(x = c(\"A\", \"B\", \"A\", \"C\", \"D\"))\n\n\n# This should throw an error because the default value is stop() and the value\n# \"D\" is not specified in the function\ndata1 %>% mutate(new_x = replace_func(x))\n```\n\nCurrently, the only alternatives for handling unknown values in `case_when()` are:\n\n1. A manual check after executing `case_when()`, which is an imperfect solution with unnecessary complexity or\n2. Leaving `.default = NA`, which can lead to silent failures—an unknown value that should have been handled explicitly might be mistakenly transformed into `NA` instead of triggering an error.\n\nNeither of these solutions is ideal.\n\n## Proposed Solution\n\nI believe the default behavior should be something along the lines of `.default = stop(paste0(\"Unknown value: \", x))`. This would force users to explicitly handle unknown values within their program, ensuring safer data transformations. If users want to allow unknown values to default to `NA`, they should be required to specify it explicitly by using `.default = NA` or `TRUE ~ NA`. This approach would provide better safety by default, preventing unintended `NA` values from propagating due to missing mappings in `case_when()`.\n\nWould love to hear your thoughts on this!",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7653/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/7653/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7651",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7651/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7651/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7651/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7651",
#> "id": 2829663322,
#> "node_id": "I_kwDOAGIUpc6oqTxa",
#> "number": 7651,
#> "title": "Allow multiple arguments to `na_if`",
#> "user": {
#> "login": "nalimilan",
#> "id": 1120448,
#> "node_id": "MDQ6VXNlcjExMjA0NDg=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1120448?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/nalimilan",
#> "html_url": "https://github.com/nalimilan",
#> "followers_url": "https://api.github.com/users/nalimilan/followers",
#> "following_url": "https://api.github.com/users/nalimilan/following{/other_user}",
#> "gists_url": "https://api.github.com/users/nalimilan/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/nalimilan/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/nalimilan/subscriptions",
#> "organizations_url": "https://api.github.com/users/nalimilan/orgs",
#> "repos_url": "https://api.github.com/users/nalimilan/repos",
#> "events_url": "https://api.github.com/users/nalimilan/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/nalimilan/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-02-04T09:57:49Z",
#> "updated_at": "2025-02-04T09:57:49Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "It's quite frequent to have to recode several distinct values to NA. So far the shortest solution I could find to do that is e.g. `na_if(na_if(vec, 88), 99)`. `if_else(vec %in% c(88, 99), NA_real_, vec)` or `case_match(vec, c(88, 99) ~ NA, .default=vec)` are also possible but relatively verbose. Could it be allowed to pass multiple arguments to `na_if ` so that one could write `na_if(vec, 88, 99)` instead?",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7651/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/7651/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7650",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7650/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7650/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7650/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7650",
#> "id": 2825224316,
#> "node_id": "I_kwDOAGIUpc6oZYB8",
#> "number": 7650,
#> "title": "set_names vs rename_with",
#> "user": {
#> "login": "ggrothendieck",
#> "id": 7840510,
#> "node_id": "MDQ6VXNlcjc4NDA1MTA=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/7840510?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/ggrothendieck",
#> "html_url": "https://github.com/ggrothendieck",
#> "followers_url": "https://api.github.com/users/ggrothendieck/followers",
#> "following_url": "https://api.github.com/users/ggrothendieck/following{/other_user}",
#> "gists_url": "https://api.github.com/users/ggrothendieck/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/ggrothendieck/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/ggrothendieck/subscriptions",
#> "organizations_url": "https://api.github.com/users/ggrothendieck/orgs",
#> "repos_url": "https://api.github.com/users/ggrothendieck/repos",
#> "events_url": "https://api.github.com/users/ggrothendieck/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/ggrothendieck/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2025-02-01T13:53:04Z",
#> "updated_at": "2025-02-01T13:53:04Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Is there a difference between `rlang::set_names` and `dplyr::rename_with`? Are both needed?\n\n```\nlibrary(purrr)\niris %>%\n set_names( . %>% sub(\"Petal\", \"x\", .) %>% sub(\"Sepal\", \"y\", .)) %>%\n names\n## [1] \"y.Length\" \"y.Width\" \"x.Length\" \"x.Width\" \"Species\" \n\n# same code except set_names replaced with rename_with\nlibrary(dplyr)\niris %>%\n rename_with( . %>% sub(\"Petal\", \"x\", .) %>% sub(\"Sepal\", \"y\", .)) %>%\n names\n## [1] \"y.Length\" \"y.Width\" \"x.Length\" \"x.Width\" \"Species\" \n```",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7650/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/7650/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7649",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7649/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7649/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7649/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7649",
#> "id": 2824576071,
#> "node_id": "I_kwDOAGIUpc6oW5xH",
#> "number": 7649,
#> "title": "Possible memory leak involving warnings",
#> "user": {
#> "login": "dkutner",
#> "id": 66534044,
#> "node_id": "MDQ6VXNlcjY2NTM0MDQ0",
#> "avatar_url": "https://avatars.githubusercontent.com/u/66534044?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/dkutner",
#> "html_url": "https://github.com/dkutner",
#> "followers_url": "https://api.github.com/users/dkutner/followers",
#> "following_url": "https://api.github.com/users/dkutner/following{/other_user}",
#> "gists_url": "https://api.github.com/users/dkutner/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/dkutner/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/dkutner/subscriptions",
#> "organizations_url": "https://api.github.com/users/dkutner/orgs",
#> "repos_url": "https://api.github.com/users/dkutner/repos",
#> "events_url": "https://api.github.com/users/dkutner/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/dkutner/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 3,
#> "created_at": "2025-01-31T23:37:24Z",
#> "updated_at": "2025-05-13T02:25:34Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "I recently updated my `dplyr` version (late to the party), and I'm hitting some increased memory usage. I've traced it back to how warnings are handled. Beginning in `dplyr 1.1.1`, I get the following output:\n``` r\nlibrary(dplyr)\n#> \n#> Attaching package: 'dplyr'\n#> The following objects are masked from 'package:stats':\n#> \n#> filter, lag\n#> The following objects are masked from 'package:base':\n#> \n#> intersect, setdiff, setequal, union\n\nidentity <- function(x, warn) {\n if (warn) {\n warning(\"fake warning\")\n }\n x\n}\n\ndf <- tibble::tibble(e = rep(1, 1e8))\n\nprint(gc())\n#> used (Mb) gc trigger (Mb) max used (Mb)\n#> Ncells 620941 33.2 1306337 69.8 1306337 69.8\n#> Vcells 101049658 771.0 148096356 1129.9 101084366 771.3\n\ndf <- df %>% mutate(e = identity(e, warn = TRUE))\n#> Warning: There was 1 warning in `mutate()`.\n#> ℹ In argument: `e = identity(e, warn = TRUE)`.\n#> Caused by warning in `identity()`:\n#> ! fake warning\n\nprint(gc())\n#> used (Mb) gc trigger (Mb) max used (Mb)\n#> Ncells 729780 39.0 1306337 69.8 1306337 69.8\n#> Vcells 101287706 772.8 148096356 1129.9 102369359 781.1\n\nrm(df)\nprint(gc())\n#> used (Mb) gc trigger (Mb) max used (Mb)\n#> Ncells 729742 39.0 1306337 69.8 1306337 69.8\n#> Vcells 101287654 772.8 148096356 1129.9 102369359 781.1\n```\n\n<sup>Created on 2025-01-31 with [reprex v2.0.2](https://reprex.tidyverse.org)<\/sup>\n\nIf I restart R and rerun with `warn = FALSE`, the final memory usage is only 7.9 MB rather than 772.8 MB. Additionally, if I rewrite the mutate to avoid using a pipe via `df <- mutate(df, e = identity(e, warn = TRUE))`, the final memory usage is only 8.8 MB. Switching the pipe to `|>` also yields low memory usage. Under `dplyr 1.1.0`, the above reprex yields 18.8 MB.\n\nI don't have a full appreciation for whether warnings would capture my environment, but I'm wondering if that's perhaps happening within either base R or dplyr's own record of warnings.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7649/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/7649/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7630",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7630/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7630/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7630/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7630",
#> "id": 2817394650,
#> "node_id": "I_kwDOAGIUpc6n7gfa",
#> "number": 7630,
#> "title": "`filter()` removes labels from `glue` variables",
#> "user": {
#> "login": "d-morrison",
#> "id": 2474437,
#> "node_id": "MDQ6VXNlcjI0NzQ0Mzc=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/2474437?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/d-morrison",
#> "html_url": "https://github.com/d-morrison",
#> "followers_url": "https://api.github.com/users/d-morrison/followers",
#> "following_url": "https://api.github.com/users/d-morrison/following{/other_user}",
#> "gists_url": "https://api.github.com/users/d-morrison/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/d-morrison/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/d-morrison/subscriptions",
#> "organizations_url": "https://api.github.com/users/d-morrison/orgs",
#> "repos_url": "https://api.github.com/users/d-morrison/repos",
#> "events_url": "https://api.github.com/users/d-morrison/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/d-morrison/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-01-29T06:54:40Z",
#> "updated_at": "2025-01-29T07:07:13Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Here's a reprex:\n\n``` r\nlibrary(labelled)\nlibrary(glue)\nlibrary(dplyr)\n#> \n#> Attaching package: 'dplyr'\n#> The following objects are masked from 'package:stats':\n#> \n#> filter, lag\n#> The following objects are masked from 'package:base':\n#> \n#> intersect, setdiff, setequal, union\ntest = tibble(\n a = 1 |> set_label_attribute(\"a1\"),\n b = glue::glue(\"two\") |> set_label_attribute(\"b2\")\n)\ntest$b |> get_label_attribute()\n#> [1] \"b2\"\n\n# filter() strips the variable label from column `b`\ndplyr::filter(test)$b |> get_label_attribute()\n#> NULL\n\n# filter() doesn't strip the label from column `a`\ndplyr::filter(test)$a |> get_label_attribute()\n#> [1] \"a1\"\n```\n\n<sup>Created on 2025-01-28 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\nI expected column `b` to keep its label attribute. Not sure if this is ultimately an issue with `dplyr`, `glue`, or `labelled`, but seems like it's in `dplyr`?",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7630/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/7630/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7622",
#> "id": 2769857410,
#> "node_id": "I_kwDOAGIUpc6lGKuC",
#> "number": 7622,
#> "title": "`Mutating joins` relationship documentation issues",
#> "user": {
#> "login": "bounlu",
#> "id": 17899927,
#> "node_id": "MDQ6VXNlcjE3ODk5OTI3",
#> "avatar_url": "https://avatars.githubusercontent.com/u/17899927?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/bounlu",
#> "html_url": "https://github.com/bounlu",
#> "followers_url": "https://api.github.com/users/bounlu/followers",
#> "following_url": "https://api.github.com/users/bounlu/following{/other_user}",
#> "gists_url": "https://api.github.com/users/bounlu/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/bounlu/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/bounlu/subscriptions",
#> "organizations_url": "https://api.github.com/users/bounlu/orgs",
#> "repos_url": "https://api.github.com/users/bounlu/repos",
#> "events_url": "https://api.github.com/users/bounlu/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/bounlu/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2025-01-06T05:32:44Z",
#> "updated_at": "2025-01-06T13:46:11Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "`Mutate-joins (dplyr)` documentation says:\n\n```\nrelationship\n\nHandling of the expected relationship between the keys of x and y. If the expectations chosen from the list below are invalidated, an error is thrown.\n\nNULL, the default, doesn't expect there to be any relationship between x and y. However, for equality joins it will check for a many-to-many relationship (which is typically unexpected) and will warn if one occurs, encouraging you to either take a closer look at your inputs or make this relationship explicit by specifying \"many-to-many\".\n\nSee the Many-to-many relationships section for more details.\n\n\"one-to-one\" expects:\nEach row in x matches at most 1 row in y.\nEach row in y matches at most 1 row in x.\n\n\"one-to-many\" expects:\nEach row in y matches at most 1 row in x.\n\n\"many-to-one\" expects:\nEach row in x matches at most 1 row in y.\n\n\"many-to-many\" doesn't perform any relationship checks, but is provided to allow you to be explicit about this relationship if you know it exists.\n\nrelationship doesn't handle cases where there are zero matches. For that, see unmatched.\n```\n\nI see there are 2 issues:\n\n1. `one-to-many` and `many-to-one` description looks awkward and reversed to me. Logically, it should specify from left to right, x -> y. So `one-to-many` should mean \"Rows in x may match multiple rows in y\". Similarly, `many-to-one` should mean \"Multiple rows in x may match same row in y\".\n\n2. Specifying `relationship` explicitly as `one-to-many` or `many-to-one` do not generate any warning or error if there is no such matching in the data, i.e. if only `one-to-one` exists. I would expect an error would be thrown if the specified relationship does not exist in the matching as the documentation says, otherwise I don't get the point of specifying the relationship explicitly.\n\nI have read [this](https://github.com/tidyverse/dplyr/pull/6753) but I believe the above issues still remain to be resolved.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/reactions",
#> "total_count": 0,
#> "+1": 0,
#> "-1": 0,
#> "laugh": 0,
#> "hooray": 0,
#> "confused": 0,
#> "heart": 0,
#> "rocket": 0,
#> "eyes": 0
#> },
#> "timeline_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7622/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7621",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7621/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7621/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7621/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7621",
#> "id": 2769423039,
#> "node_id": "I_kwDOAGIUpc6lEgq_",
#> "number": 7621,
#> "title": "More examples in `across()` documentation",
#> "user": {
#> "login": "AmeliaMN",
#> "id": 2576787,
#> "node_id": "MDQ6VXNlcjI1NzY3ODc=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/2576787?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/AmeliaMN",
#> "html_url": "https://github.com/AmeliaMN",
#> "followers_url": "https://api.github.com/users/AmeliaMN/followers",
#> "following_url": "https://api.github.com/users/AmeliaMN/following{/other_user}",
#> "gists_url": "https://api.github.com/users/AmeliaMN/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/AmeliaMN/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/AmeliaMN/subscriptions",
#> "organizations_url": "https://api.github.com/users/AmeliaMN/orgs",
#> "repos_url": "https://api.github.com/users/AmeliaMN/repos",
#> "events_url": "https://api.github.com/users/AmeliaMN/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/AmeliaMN/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 2,
#> "created_at": "2025-01-05T19:48:28Z",
#> "updated_at": "2025-01-17T16:00:34Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "When I use `across()` I almost always want to do the thing to every single column. For whatever reason, that tidyselect action is hard for me to remember/find. Is it `all()`? Is it `everything()`? Etc. It would be great to have an example in the `across()` documentation that does the thing to every column. Additionally, it would be awesome to have an example that does the thing conditionally depending on the variable type. For example, rounding all the numeric variables. ",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7621/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/7621/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7113",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7113/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7113/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7113/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7113",
#> "id": 2752730662,
#> "node_id": "PR_kwDOAGIUpc6F6eFe",
#> "number": 7113,
#> "title": "Add logic to catch single named logical expressions",
#> "user": {
#> "login": "brendensm",
#> "id": 97240544,
#> "node_id": "U_kgDOBcvF4A",
#> "avatar_url": "https://avatars.githubusercontent.com/u/97240544?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/brendensm",
#> "html_url": "https://github.com/brendensm",
#> "followers_url": "https://api.github.com/users/brendensm/followers",
#> "following_url": "https://api.github.com/users/brendensm/following{/other_user}",
#> "gists_url": "https://api.github.com/users/brendensm/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/brendensm/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/brendensm/subscriptions",
#> "organizations_url": "https://api.github.com/users/brendensm/orgs",
#> "repos_url": "https://api.github.com/users/brendensm/repos",
#> "events_url": "https://api.github.com/users/brendensm/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/brendensm/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2024-12-20T13:19:14Z",
#> "updated_at": "2024-12-20T13:19:14Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7113",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7113",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7113.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7113.patch",
#> "merged_at": {}
#> },
#> "body": "This PR would close #7105. This is a potential solution that adds logic to `check_filter`. This solution stops single, named logical expressions. \r\n\r\n```r\r\nmtcars$big_cyl <- mtcars$cyl > 4\r\n\r\nfilter(mtcars, big_cyl = TRUE) |>\r\n nrow()\r\n#> Error in `filter()`:\r\n#> ! We detected a named input.\r\n#> ℹ This usually means that you've used `=` instead of `==`.\r\n#> ℹ Did you mean `big_cyl == TRUE`?\r\n#> \r\nfilter(mtcars, big_cyl == TRUE) |>\r\n nrow()\r\n#> [1] 21\r\n#>\r\n```\r\n\r\nBut still allows for named logical vectors:\r\n\r\n```r\r\nfilters <- mtcars %>%\r\n transmute(\r\n cyl %in% 6:8,\r\n hp / drat > 50\r\n )\r\n\r\nexpect_identical(\r\n mtcars %>% filter(!!!unname(filters)),\r\n mtcars %>% filter(!!!filters)\r\n)\r\n```\r\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7113/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/7113/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7112",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7112/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7112/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7112/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7112",
#> "id": 2748696028,
#> "node_id": "I_kwDOAGIUpc6j1cXc",
#> "number": 7112,
#> "title": "`count(.by = )`",
#> "user": {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2024-12-18T20:29:48Z",
#> "updated_at": "2024-12-18T20:29:48Z",
#> "closed_at": {},
#> "author_association": "MEMBER",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "I accidentally used the syntax below, and wonder if this should be the default recommended one, or at least a supported alternative.\n\n``` r\noptions(conflicts.policy = list(warn = FALSE))\nlibrary(dplyr)\n\ntibble(a = 1:3) |>\n count(.by = a)\n#> # A tibble: 3 × 2\n#> .by n\n#> <int> <int>\n#> 1 1 1\n#> 2 2 1\n#> 3 3 1\n```\n\n<sup>Created on 2024-12-18 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n\nIt took me a while to understand why there's a `.by` column in the output.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7112/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/7112/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7111",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7111/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7111/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7111/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7111",
#> "id": 2733589121,
#> "node_id": "PR_kwDOAGIUpc6E5JBO",
#> "number": 7111,
#> "title": "Update storms dataset",
#> "user": {
#> "login": "tomalrussell",
#> "id": 2762769,
#> "node_id": "MDQ6VXNlcjI3NjI3Njk=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/2762769?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/tomalrussell",
#> "html_url": "https://github.com/tomalrussell",
#> "followers_url": "https://api.github.com/users/tomalrussell/followers",
#> "following_url": "https://api.github.com/users/tomalrussell/following{/other_user}",
#> "gists_url": "https://api.github.com/users/tomalrussell/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/tomalrussell/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/tomalrussell/subscriptions",
#> "organizations_url": "https://api.github.com/users/tomalrussell/orgs",
#> "repos_url": "https://api.github.com/users/tomalrussell/repos",
#> "events_url": "https://api.github.com/users/tomalrussell/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/tomalrussell/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2024-12-11T17:39:24Z",
#> "updated_at": "2024-12-11T17:39:24Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7111",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7111",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7111.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7111.patch",
#> "merged_at": {}
#> },
#> "body": "Aiming to close #7110 - hopefully this is appropriately focussed, just updating the URL and running the update script.\r\n\r\nOne potential extension would be to include Radius of Maximum Wind, which can be interesting for parametric wind field modelling. According to the [documentation](https://www.nhc.noaa.gov/data/hurdat/hurdat2-format-atl-1851-2021.pdf) these values have been recently added, since the 2022 release, with data from the 2021 season onwards.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7111/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/7111/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7110",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7110/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7110/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7110/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7110",
#> "id": 2733565156,
#> "node_id": "I_kwDOAGIUpc6i7uTk",
#> "number": 7110,
#> "title": "Update storms dataset",
#> "user": {
#> "login": "tomalrussell",
#> "id": 2762769,
#> "node_id": "MDQ6VXNlcjI3NjI3Njk=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/2762769?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/tomalrussell",
#> "html_url": "https://github.com/tomalrussell",
#> "followers_url": "https://api.github.com/users/tomalrussell/followers",
#> "following_url": "https://api.github.com/users/tomalrussell/following{/other_user}",
#> "gists_url": "https://api.github.com/users/tomalrussell/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/tomalrussell/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/tomalrussell/subscriptions",
#> "organizations_url": "https://api.github.com/users/tomalrussell/orgs",
#> "repos_url": "https://api.github.com/users/tomalrussell/repos",
#> "events_url": "https://api.github.com/users/tomalrussell/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/tomalrussell/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2024-12-11T17:28:32Z",
#> "updated_at": "2024-12-11T17:28:32Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "As in #6000, #6320 - the [hurdat](https://www.nhc.noaa.gov/data/#hurdat) storms dataset continues to receive annual updates.\n\nI'll open a small PR in case it's still of interest to keep up with this.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7110/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/7110/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7109",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7109/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7109/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7109/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7109",
#> "id": 2725959859,
#> "node_id": "I_kwDOAGIUpc6ietiz",
#> "number": 7109,
#> "title": "Suggestion: `slice_ends()`",
#> "user": {
#> "login": "DesiQuintans",
#> "id": 3200601,
#> "node_id": "MDQ6VXNlcjMyMDA2MDE=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/3200601?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/DesiQuintans",
#> "html_url": "https://github.com/DesiQuintans",
#> "followers_url": "https://api.github.com/users/DesiQuintans/followers",
#> "following_url": "https://api.github.com/users/DesiQuintans/following{/other_user}",
#> "gists_url": "https://api.github.com/users/DesiQuintans/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/DesiQuintans/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/DesiQuintans/subscriptions",
#> "organizations_url": "https://api.github.com/users/DesiQuintans/orgs",
#> "repos_url": "https://api.github.com/users/DesiQuintans/repos",
#> "events_url": "https://api.github.com/users/DesiQuintans/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/DesiQuintans/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2024-12-09T04:33:00Z",
#> "updated_at": "2024-12-25T15:10:28Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "I often want to know what discretising a continuous variable actually looks like in my data, so I often want to know what happens at the edges of level. Maybe this sort of thing is useful to enough other people that it's worth making a dedicated `slice_` function?\n\n``` r\nlibrary(dplyr)\n#> \n#> Attaching package: 'dplyr'\n#> The following objects are masked from 'package:stats':\n#> \n#> filter, lag\n#> The following objects are masked from 'package:base':\n#> \n#> intersect, setdiff, setequal, union\n\nset.seed(12345)\n\nx <- \n data.frame(\n age = runif(50, min = 0, max = 100)\n ) %>% \n mutate(\n age_group = \n cut(\n age,\n breaks = c(0, 18, 26, 32, 50, 60, 75, 100),\n include.lowest = TRUE\n )\n )\n \n\nx %>% \n arrange(age) %>% \n group_by(age_group) %>% \n {\n bind_rows(\n slice_head(., n = 2),\n slice_tail(., n = 2)\n ) %>% \n arrange(age)\n }\n#> # A tibble: 24 × 2\n#> # Groups: age_group [6]\n#> age age_group\n#> <dbl> <fct> \n#> 1 0.114 [0,18] \n#> 2 0.599 [0,18] \n#> 3 16.6 [0,18] \n#> 4 17.9 [0,18] \n#> 5 18.8 (18,26] \n#> 6 22.6 (18,26] \n#> 7 22.6 (18,26] \n#> 8 26.0 (18,26] \n#> 9 32.1 (32,50] \n#> 10 32.5 (32,50] \n#> # ℹ 14 more rows\n```\n\n<sup>Created on 2024-12-09 with [reprex v2.1.1](https://reprex.tidyverse.org)<\/sup>\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7109/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/7109/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7108",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7108/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7108/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7108/events",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7108",
#> "id": 2722467994,
#> "node_id": "PR_kwDOAGIUpc6ES4Eg",
#> "number": 7108,
#> "title": "docs: typo fix",
#> "user": {
#> "login": "maelle",
#> "id": 8360597,
#> "node_id": "MDQ6VXNlcjgzNjA1OTc=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/8360597?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/maelle",
#> "html_url": "https://github.com/maelle",
#> "followers_url": "https://api.github.com/users/maelle/followers",
#> "following_url": "https://api.github.com/users/maelle/following{/other_user}",
#> "gists_url": "https://api.github.com/users/maelle/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/maelle/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/maelle/subscriptions",
#> "organizations_url": "https://api.github.com/users/maelle/orgs",
#> "repos_url": "https://api.github.com/users/maelle/repos",
#> "events_url": "https://api.github.com/users/maelle/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/maelle/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2024-12-06T09:03:03Z",
#> "updated_at": "2024-12-06T17:35:27Z",
#> "closed_at": {},
#> "author_association": "CONTRIBUTOR",
#> "type": {},
#> "active_lock_reason": {},
#> "draft": false,
#> "pull_request": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/pulls/7108",
#> "html_url": "https://github.com/tidyverse/dplyr/pull/7108",
#> "diff_url": "https://github.com/tidyverse/dplyr/pull/7108.diff",
#> "patch_url": "https://github.com/tidyverse/dplyr/pull/7108.patch",
#> "merged_at": {}
#> },
#> "body": {},
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7108/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/7108/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7106",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7106/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7106/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7106/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7106",
#> "id": 2678939827,
#> "node_id": "I_kwDOAGIUpc6frWCz",
#> "number": 7106,
#> "title": "Show methods implemented by loaded packages more prominently",
#> "user": {
#> "login": "krlmlr",
#> "id": 1741643,
#> "node_id": "MDQ6VXNlcjE3NDE2NDM=",
#> "avatar_url": "https://avatars.githubusercontent.com/u/1741643?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/krlmlr",
#> "html_url": "https://github.com/krlmlr",
#> "followers_url": "https://api.github.com/users/krlmlr/followers",
#> "following_url": "https://api.github.com/users/krlmlr/following{/other_user}",
#> "gists_url": "https://api.github.com/users/krlmlr/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/krlmlr/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/krlmlr/subscriptions",
#> "organizations_url": "https://api.github.com/users/krlmlr/orgs",
#> "repos_url": "https://api.github.com/users/krlmlr/repos",
#> "events_url": "https://api.github.com/users/krlmlr/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/krlmlr/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [
#> {
#> "id": 674867158,
#> "node_id": "MDU6TGFiZWw2NzQ4NjcxNTg=",
#> "url": "https://api.github.com/repos/tidyverse/dplyr/labels/documentation",
#> "name": "documentation",
#> "color": "CBBAB8",
#> "default": true,
#> "description": ""
#> }
#> ],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 1,
#> "created_at": "2024-11-21T10:38:06Z",
#> "updated_at": "2024-11-21T19:31:27Z",
#> "closed_at": {},
#> "author_association": "MEMBER",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Example: if dbplyr is loaded, `?mutate` would contain a link to `?dbplyr::mutate.tbl_lazy` .\n\nPretty much like DBI, e.g., https://dbi.r-dbi.org/reference/dbConnect.html .\n\nRelevant for https://github.com/tidyverse/duckplyr/issues/214 and of course the existing backends.\n\nCC @maelle.",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7106/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/7106/timeline",
#> "performed_via_github_app": {},
#> "state_reason": {}
#> },
#> {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7105",
#> "repository_url": "https://api.github.com/repos/tidyverse/dplyr",
#> "labels_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7105/labels{/name}",
#> "comments_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7105/comments",
#> "events_url": "https://api.github.com/repos/tidyverse/dplyr/issues/7105/events",
#> "html_url": "https://github.com/tidyverse/dplyr/issues/7105",
#> "id": 2677769280,
#> "node_id": "I_kwDOAGIUpc6fm4RA",
#> "number": 7105,
#> "title": "filter should warn or prevent users from using named logical inputs",
#> "user": {
#> "login": "conig",
#> "id": 12742211,
#> "node_id": "MDQ6VXNlcjEyNzQyMjEx",
#> "avatar_url": "https://avatars.githubusercontent.com/u/12742211?v=4",
#> "gravatar_id": "",
#> "url": "https://api.github.com/users/conig",
#> "html_url": "https://github.com/conig",
#> "followers_url": "https://api.github.com/users/conig/followers",
#> "following_url": "https://api.github.com/users/conig/following{/other_user}",
#> "gists_url": "https://api.github.com/users/conig/gists{/gist_id}",
#> "starred_url": "https://api.github.com/users/conig/starred{/owner}{/repo}",
#> "subscriptions_url": "https://api.github.com/users/conig/subscriptions",
#> "organizations_url": "https://api.github.com/users/conig/orgs",
#> "repos_url": "https://api.github.com/users/conig/repos",
#> "events_url": "https://api.github.com/users/conig/events{/privacy}",
#> "received_events_url": "https://api.github.com/users/conig/received_events",
#> "type": "User",
#> "user_view_type": "public",
#> "site_admin": false
#> },
#> "labels": [],
#> "state": "open",
#> "locked": false,
#> "assignee": {},
#> "assignees": [],
#> "milestone": {},
#> "comments": 0,
#> "created_at": "2024-11-21T02:56:46Z",
#> "updated_at": "2024-11-21T02:56:46Z",
#> "closed_at": {},
#> "author_association": "NONE",
#> "type": {},
#> "active_lock_reason": {},
#> "sub_issues_summary": {
#> "total": 0,
#> "completed": 0,
#> "percent_completed": 0
#> },
#> "body": "Currently dplyr warns users who accidentally use `=` instead of `==`. \nHowever, this does not occur if a logical is passed as the named variable.\n\n## Demonstration\n\n\n\n\n\n``` r\nlibrary(dplyr)\n\nmtcars$big_cyl <- mtcars$cyl > 4\n# Mistaking = for == silently fails, returning the whole dataset\nfilter(mtcars, big_cyl = TRUE) |>\n nrow()\n#> [1] 32\n```\nCorrectly using `==` for comparison\n```r\n# Correctly using ==.\nfilter(mtcars, big_cyl == TRUE) |>\n nrow()\n#> [1] 21\n```\n\nI think while doing `x == TRUE` is bad practice, this is bound to trip up some users and an error should be thrown.\n\n## Additional context\n\nExample of the error working correctly:\n``` r\n# version 1.1.4\ndplyr::filter(mtcars, cyl = \"4\")\n#> Error in `dplyr::filter()`:\n#> ! We detected a named input.\n#> ℹ This usually means that you've used `=` instead of `==`.\n#> ℹ Did you mean `cyl == \"4\"`?\n```\n\nInterestingly if the TRUE is in a vector the error *is* thrown.\n\n``` r\ndplyr::filter(mtcars, big_cyl = c(TRUE))\n#> Error in `dplyr::filter()`:\n#> ! We detected a named input.\n#> ℹ This usually means that you've used `=` instead of `==`.\n#> ℹ Did you mean `big_cyl == c(TRUE)`?\n```\n\n",
#> "closed_by": {},
#> "reactions": {
#> "url": "https://api.github.com/repos/tidyverse/dplyr/issues/7105/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/7105/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"
)
)
}
if (FALSE) {
## Pass along a query to the search/code endpoint via the ... argument
x <- gh::gh(
"/search/code",
q = "installation repo:r-lib/gh",
.send_headers = c("X-GitHub-Api-Version" = "2022-11-28")
)
str(x, list.len = 3, give.attr = FALSE)
}