【发布时间】:2011-04-22 23:56:06
【问题描述】:
如何在 R 中创建一个“空对象”? [编辑:我不知道如何正确称呼这个“东西”,所以我称它为“空对象”,其他:“空符号”、“零长度符号”、“缺失对象”也可能被使用]
[edit2:最后,我倾向于将“缺少的符号对象”作为“事物”的名称。 J.Chambers 似乎也在他 2008 年的书中使用了这个术语,请参阅 cmets 以获取 @mbq 的答案。根据钱伯斯的说法,“缺失符号”的内容是零长度的字符串。因此, as.symbol("") 应该创建这样一个对象,它在当前版本的 R(2.11.1) 中没有 ]
我能找到的最简单的方法是
x <- alist(a=)$a
[澄清]
请注意,“空对象”不是 NULL 对象或长度为 0 的向量。 上面示例中的“空对象”x 可以用于函数的形式操作,这正是我需要的。
这是一个例子:
> 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
所以,我只是在寻找一种方法来创建用于函数形式操作的空对象。我很确定base R中一定有办法。
这是一个例子:
> 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
谢谢。
【问题讨论】:
标签: r