这里有个问题。我有一堆基于用户输入创建不同数据帧(A)的if语句。在某些情况下,一些数据帧将是空的,所以可能(A)是空的,但是(D)有信息。
我正在尝试创建一个条件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)。该栏的字母为A。该列中的这些字母A根据用户的输入进行更改。
然后,我有一系列if语句,这些语句要求“如果A不是空的,那么执行此聚合”,从而跳过df,如果其中没有数据。聚合使其从16列到19列。因为空df没有被聚合,所以它仍然有19列。在执行这些if语句和聚合之后,剩下的是已经聚合(16列)或仍然为空(19列)的dfA、dfB、dfC等。然后,我想要一段代码,上面写着“对于已经聚合(16列)的df,如果df没有被聚合(是空的),那么就不要执行rbind。
谢谢!
发布于 2017-11-18 02:53:05
你可以这样做:
if语句,查看哪些语句包含非零零。rbind表达式下面是执行此操作的脚本:
1.创建一个空列表来存储数据文件的名称
list.df = " "如果语句检查数据帧是否为非零,则将名称添加到列表中(如果为true )。
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
if(nrow(df.g) > 0) {
list.df=c(list.df,deparse(substitute(df.g)))
}4.表述
list.df = list.df[2:length(list.df)] #remove first element
expression = paste0("df.combined = rbind(",paste0( list.df, collapse =
','), paste0(")"))5.评估表达方式
eval(parse(text=expression))df.combined将是您要寻找的最终数据集。
https://stackoverflow.com/questions/47361532
复制相似问题