`address(x)` fails when x is the missing argument
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 38/100
Direzione di ricerca
Reproduce the failure with the supplied R examples for address(x), including the missing argument case, then trace the address implementation through the Caddress entry point. Compare the proposed maybe_missing workaround and verify that ordinary and missing arguments return the expected addresses, including the function-call example.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
The code
library(data.table)
x <- quote(list(x=))[[2]] # extract the missing argument
missing(x) # TRUE
address(x) # Error in eval(substitute(x), parent.frame()) :
# argument "a" is missing, with no default
{function(x) address(x) }() # same error
will fail when x is the missing argument. I think it is a bug since x is a legitimate variable.
This is a situation similar to #1521 of rlang.
So i propose to apply the same workaround here (see maybe_missing of rlang for case.)
#PROPOSED SOLUTION:
address2 <- function (x) {
maybe_missing <- function (x, default = quote(list(x=))[[2]]) {
if (missing(x)) default else x
}
.Call("Caddress", eval(substitute(maybe_missing(x)), parent.frame()), PACKAGE= "data_table")
}
# TEST:
x <- quote(list(x=))[[2]]
y <- "something"
address2(x)
address2(y)
stopifnot(address2(y) == address(y)) #OK
stopifnot(paste0("0x",address2(x)) == rlang::obj_address(x)) #OK
stopifnot(paste0("0x",address2(y)) == rlang::obj_address(y)) #OK
{function(x) address2(x)}() # OK
Hope may be of help.
Tks.
- Lingua principale
- R
- Stelle
- 3.9k
- Fork
- 1.1k
- Merge medio
- 14h 4m
- PR unite (30g)
- 4
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Rdatatable/data.table
-
as.data.table() recurses without end on a survival::Surv object (or any data.frame carrying one) Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
Rdatatable/data.table#7887 ·
-
consistency tests
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Rdatatable/data.table#7853 · 3 commenti ·
-
internals
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
Rdatatable/data.table#6938 · 1 commento ·
-
encoding fread
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
Rdatatable/data.table#5179 · 8 commenti ·
-
documentation programming
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Rdatatable/data.table#3199 · 3 commenti ·
Tutte le issue di Rdatatable/data.table
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
r-lib/pkgdepends#485 · 3 commenti ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
-
beginners blocker
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
enviPathR ApertaBuild Error Build OK Build Warning policies-accepted pre-review precheck-passed
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 84/100
Bioconductor/BiocContributions#207 · 6 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
datacarpentry/semester-biology#1255 ·