【发布时间】:2017-11-18 01:24:51
【问题描述】:
问题来了。我有一堆 if 语句,它们根据用户输入创建不同的数据帧 (A-F)。在某些情况下,一些数据框会是空的,所以可能 (A-C) 是空的,但 (D-F) 有信息。
我正在尝试创建一个条件 rbind(),它仅在数据框不为空时才组合行。
我不太确定该怎么做?我不知道我是否应该创建一堆条件并使用另一个 if 语句:
cond_a <- nrow(a) != 0
cond_b <- nrow(b) != 0
cond_c <- nrow(c) != 0
cond_d <- nrow(d) != 0
cond_e <- nrow(e) != 0
cond_f <- nrow(f) != 0
但是我不知道如何利用这些条件......
编辑:退后一步并更好地解释:我有一个数据帧,我通过按列子集将其拆分为 6 个不同的数据帧,因此它将其拆分为 6 个数据帧 (A-G)。该列有字母 A-G。该列中的这些字母 A-G 会根据用户输入而变化。
然后我有一系列 if 语句询问“如果 A 不为空,则执行此聚合”,因此如果 df 中没有数据,则跳过它。聚合将其从 16 列增加到 19 列。因为空的 df 没有被聚合,它仍然有 19 列。在我执行了这些 if 语句和聚合之后,我留下了 dfA、dfB、dfC 等,它们要么已经聚合(16 列),要么仍然为空(19 列)。然后我想要一段代码,上面写着“对于已聚合的 df(16 列)rbind,如果 df 尚未聚合(为空),则不要执行 rbind。
谢谢!
【问题讨论】:
-
rbind适用于空的 data.frames。rbind(data.frame(a = 1:10, b = 1:10), data.frame()) -
问题是由于创建它们的另一个 if 语句,空数据框的列数不同,所以我正在寻找本质上说的东西,如果这个数据框是空的我要把它排除在 rbind 之外
-
我很想看看你的空 data.frame 是什么样子的
-
它只是一个有 19 列的 df,上面写着“表中没有可用的数据”,因为它是空的,不会聚合到非空的聚合到的 16 列,所以我只想合并已聚合的 df,但基于条件,因为取决于用户输入的空 df 更改的数量,如果这有意义吗?
-
“非空”不同于“结构不同”。
rbind对参数中存在的列进行了一些假设(dplyr::bind_rows允许更多一些)。但我认为您需要先解决将 data.frames 与不同字段组合的问题,然后才能意识到组合空的 data.frames(具有足够相似的结构)不需要调节。
标签: r if-statement conditional rbind