首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于条件的rbind ()

基于条件的rbind ()
EN

Stack Overflow用户
提问于 2017-11-18 01:24:51
回答 1查看 1.4K关注 0票数 1

这里有个问题。我有一堆基于用户输入创建不同数据帧(A)的if语句。在某些情况下,一些数据帧将是空的,所以可能(A)是空的,但是(D)有信息。

我正在尝试创建一个条件rbind(),其中只有在数据帧不是空的情况下,它才会组合行。

我不太确定该怎么做?我不知道是否应该创建一组条件并使用另一条if语句:

代码语言:javascript
复制
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)。该栏的字母为A。该列中的这些字母A根据用户的输入进行更改。

然后,我有一系列if语句,这些语句要求“如果A不是空的,那么执行此聚合”,从而跳过df,如果其中没有数据。聚合使其从16列到19列。因为空df没有被聚合,所以它仍然有19列。在执行这些if语句和聚合之后,剩下的是已经聚合(16列)或仍然为空(19列)的dfA、dfB、dfC等。然后,我想要一段代码,上面写着“对于已经聚合(16列)的df,如果df没有被聚合(是空的),那么就不要执行rbind。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-18 02:53:05

你可以这样做:

  1. 创建要选择的数据帧的空列表。
  2. 编写一组if语句,查看哪些语句包含非零零。
  3. 继续将非零DFs的名称添加到步骤1中创建的空列表中。
  4. 将折叠这些名称的表达式写入rbind表达式
  5. 评估表达式

下面是执行此操作的脚本:

1.创建一个空列表来存储数据文件的名称

代码语言:javascript
复制
list.df = " "

如果语句检查数据帧是否为非零,则将名称添加到列表中(如果为true )。

代码语言:javascript
复制
if(nrow(df.a) > 0) { 
  list.df=c(list.df,deparse(substitute(df.a)))
 }

if(nrow(df.b) > 0) { 
  list.df=c(list.df,deparse(substitute(df.b)))
 }

if(nrow(df.c) > 0) { 
 list.df=c(list.df,deparse(substitute(df.c)))
 }

……所以从A到G

代码语言:javascript
复制
if(nrow(df.g) > 0) { 
 list.df=c(list.df,deparse(substitute(df.g)))
 }

4.表述

代码语言:javascript
复制
list.df = list.df[2:length(list.df)] #remove first element 
expression = paste0("df.combined = rbind(",paste0( list.df, collapse =
','), paste0(")"))

5.评估表达方式

代码语言:javascript
复制
eval(parse(text=expression))

df.combined将是您要寻找的最终数据集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47361532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档