¿Cómo crear un "objeto vacío" en R? [Editar: No sé cómo llamar correctamente a esta "cosa", así que lo llamo "objeto vacío", otros: "símbolo vacío", "símbolo de longitud cero", "objeto que falta" también podría ser utilizado]Crear "objetos faltantes" (también conocidos como "símbolos vacíos", "objetos vacíos")/necesarios para la manipulación de formales/
[edit2: finalmente tiendo a establecerme en el "objeto símbolo faltante" para el nombre de la "cosa". También parece que J.Chambers está utilizando esta terminología en su libro de 2008, ver comentarios para la respuesta de @ mbq. Según Chambers, el "símbolo que falta" tiene una cadena de longitud cero en su contenido. Por lo tanto, as.symbol ("") debe crear un objeto de este tipo, que no lo hace en la versión actual de R (2.11.1)]
La forma más sencilla que pude encontrar es
x <- alist(a=)$a
[ Aclaración]
Tenga en cuenta que "objeto vacío" no es un objeto NULL o un vector de longitud 0. "Objeto vacío" x en mi ejemplo anterior podría utilizarse en la manipulación de formales de la función, que es lo que necesito para .
Aquí se muestra un ejemplo:
> al <- alist(a = 323, b = , c = 434)
> al
$a
[1] 323
$b
$c
[1] 434
>
> al[["c"]] <- numeric()
> al
$a
[1] 323
$b
$c #not empty
numeric(0)
>
> al[["c"]] <- list()
> al
$a
[1] 323
$b
$c #not empty
list()
>
>
> al[["c"]] <- NULL #object removed
> al
$a
[1] 323
$b
>
> al[["c"]] <- alist(a =)$a
> al
$a
[1] 323
$b
$c #empty
Por lo tanto, estoy buscando una manera de crear objetos vacíos para su uso en formals manipulaciones de la función. Estoy bastante seguro de que debe haber una manera en R. base de
He aquí un ejemplo:
> foo <- function(a = 3232, b = 234){b+a}
> formals(foo)
$a
[1] 3232
$b
[1] 234
> formals(foo)$c <- alist(a =)$a
> formals(foo)
$a
[1] 3232
$b
[1] 234
$c
> foo <- function(a = 3232, b = 234){b+a}
> formals(foo)
$a
[1] 3232
$b
[1] 234
> formals(foo)$c <- alist(a =)$a
> formals(foo)
$a
[1] 3232
$b
[1] 234
$c
Gracias.
Sí, eso es todo! Crea esta esquiva "cosa". – VitoshKa
'bquote' actualmente hace lo mismo. Personalmente, no confiaría en este comportamiento, ya que no está documentado y hay otras formas de lograr el mismo resultado. –
@Joshua Ulrich - ¡Yap! Buen punto. – VitoshKa