这是问题所在。我有一堆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语句要求&#34;如果A不为空,则执行此聚合&#34;,如果它没有数据,则跳过df。聚合从16列到19列。因为空df尚未聚合,所以它仍然有19列。在我执行这些if语句和聚合之后,我留下了dfA,dfB,dfC等,它们已经聚合(16列)或仍然是空的(19列)。然后我想要一段代码,说明&#34;对于已经聚合的df(16列)rbind,如果df尚未聚合(为空),则不执行rbind。
谢谢!
答案 0 :(得分:0)
您可以这样做:
if
语句以查看哪些语句包含非零零rbind
表达式以下是执行此操作的脚本:
1.创建一个空列表来存储数据帧的名称
list.df = " "
2和3。如果语句检查数据帧是否为非零,则将名称添加到列表中(如果为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
将是您正在寻找的最终数据集