我正在尝试对数据帧进行子集化,以仅获取行总和不为零的行。可以在多个数据框列上正常工作-下面的代码输出一个新的数据框,该数据框将由我的代码进一步处理。但是,如果数据框只有一列,我似乎得到的是数字列表,而不是数据框。有人可以帮助我了解这种行为吗?
这是问题的最小示例。在现实生活中,此步骤是大量代码的一部分,旨在处理用户提供的不同输入。因此,我需要一些代码,这些代码将为我提供数据帧输出,而与列号无关,以便下游代码可以正确运行。
x1<-c(0,5,5,0,2)
names1<-c("A1", "A2", "A3", "A4", "A5")
df1<-as.data.frame(x1)
row.names(df1)<-names1
x2<-c(0,4,4,0,3)
names2<-c("B1", "B2", "B3", "B4", "B5")
df2<-as.data.frame(t(rbind(x1, x2)))
row.names(df2)<-names2
df1a = df1[ rowSums(df1)!=0, ]
df2a = df2[ rowSums(df2)!=0, ]
df2a产生此:
x1 x2
B2 5 4
B3 5 4
B5 2 3
df1a产生:
[1] 5 5 2