为什么用1列子集数据框会产生一个列表,而用2列子集会产生一个数据帧?

时间:2019-05-17 11:29:21

标签: r dataframe subset

我正在尝试对数据帧进行子集化,以仅获取行总和不为零的行。可以在多个数据框列上正常工作-下面的代码输出一个新的数据框,该数据框将由我的代码进一步处理。但是,如果数据框只有一列,我似乎得到的是数字列表,而不是数据框。有人可以帮助我了解这种行为吗?

这是问题的最小示例。在现实生活中,此步骤是大量代码的一部分,旨在处理用户提供的不同输入。因此,我需要一些代码,这些代码将为我提供数据帧输出,而与列号无关,以便下游代码可以正确运行。

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

0 个答案:

没有答案