【问题标题】:R - rbind a dataframe with a NULLR - rbind 一个带有 NULL 的数据帧
【发布时间】:2022-10-02 06:26:40
【问题描述】:

我试图从教科书中理解一个例子。

示例代码是这样的:

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

y <- rbind(z,x)

我的问题是,当输出看起来与x 相同时,为什么将rbind 变为Null

  • 了解这部分教科书的更广泛背景可能会有所帮助——他们还在谈论什么?对象到底是什么?据我所知,这对于普通数据框的情况没有任何意义。 identical(rbind(NULL, iris), iris) == TRUE

标签: r null rbind


【解决方案1】:

这个例子可能是为了说明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。由于 NULL 对象的rbind() 只是返回原始对象,因此对于不满足条件的情况,无需额外处理或返回虚拟值。

【讨论】:

    猜你喜欢
    • 2019-11-05
    • 2015-02-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多