【发布时间】:2016-10-06 17:54:46
【问题描述】:
这是创建一个没有行和没有列的空数据框的技巧:
iris[FALSE, FALSE]
#> data frame with 0 columns and 0 rows
看起来更聪明的代码会创建一个虚假的列:
x <- list(NULL)
class(x) <- c("data.frame")
attr(x, "row.names") <- integer(0)
str(x)
#> 'data.frame': 0 obs. of 1 variable:
#> $ : NULL
是否有非黑客替代方案?
创建这样一个东西的原因是为了满足一个可以处理空数据帧但不能处理 NULL 的函数。
这与类似的问题不同,因为它没有列也没有行。
【问题讨论】:
-
但是这个问题是关于指定列类型的。
-
structure(list(),class="data.frame")是一种尝试将类添加到列表中的原始方法。 -
我不认为这是重复的
-
OP 说他们正在尝试“满足一个可以处理空数据帧但不能处理 NULL 的函数”......如果 OP 是编写函数的人,那么我可以建议他们从错误的一面?测试
inherits(x, "data.frame")怎么样?这将通过data.frame(是否为空),但对于NULL将失败。如果他们试图将数据传递到现有函数中,那么data.frame()应该绕过测试(很可能是上述测试)。 -
@JonathanCarroll OP 正试图在
tidyr包中满足unnest;)