R-rbind一个带有NULL的数据帧



我正试图理解课本上的一个例子。

示例代码如下:

x <- cbind(x1,x2,x3)
z <- NULL
y <- rbind(z,x)

我的问题是,当输出看起来和x一样时,为什么它是rbindNull

这个例子可能是为了说明rbind()将对象设为NULL只返回非NULL对象。如果您的代码可能返回或不返回data.frame/matrix/vector(否则返回NULL(,则可以使用此功能。您展示的案例相当琐碎,但请考虑以下示例:

results <- lapply(1:4, function(i) {
if (i %% 2 == 0) {
return(data.frame(a = i, b = i / 2))
} else {
return(NULL)
}
})
# a list of mixed results (some may be NULL)
results
#> [[1]]
#> NULL
#> 
#> [[2]]
#>   a b
#> 1 2 1
#> 
#> [[3]]
#> NULL
#> 
#> [[4]]
#>   a b
#> 1 4 2
# get a data.frame of just the non-NULL rows 
do.call('rbind', results)
#>   a b
#> 1 2 1
#> 2 4 2

在这里,我们将迭代地将rbind()应用于对lapply()的调用所产生的列表中的每个元素。

我们应用的函数是任意的,但它有一些内部逻辑,导致data.frame结果,但在其他情况下返回NULL。例如,考虑API请求可能会返回数据,也可能不会返回数据,或者如果您未连接到互联网,则可能会成功,也可能不成功。

由于具有NULL的对象的rbind()只返回原始对象,因此对于不满足条件的情况,不需要额外处理或返回伪值。

相关内容

  • 没有找到相关文章

最新更新