R 矢量中的列名丢失

R 矢量中的列名丢失,r,dataframe,R,Dataframe,我有一个这样格式的数据框: DF1 <- DF0[i,6:12] (DF0 is the original data frame I read from) 我要做的是恢复0列的名称,例如: colNull <- colnames(DF1[,DF1==0]) 但是,当DF1中只有一列为0时,列名将不再恢复,结果colNull为NULL(class(colNull也为NULL),我无法使用它 有没有一个简单的解决方法?我也想了解为什么会发生这种情况,或者我做错了什么。我知道这是关

我有一个这样格式的数据框:

DF1 <- DF0[i,6:12]  (DF0 is the original data frame I read from)
我要做的是恢复0列的名称,例如:

colNull <- colnames(DF1[,DF1==0]) 
但是,当DF1中只有一列为0时,列名将不再恢复,结果colNull为NULL(class(colNull也为NULL),我无法使用它

有没有一个简单的解决方法?我也想了解为什么会发生这种情况,或者我做错了什么。我知道这是关于对象格式的问题,但不是背后的原因


提前感谢,p.

当我们子集一个数据集时,如果数据集有一行,或者如果输出是一个单列,则在子集时将其放入向量。基于
?“[”
的默认选项是

  x[i, j, ... , drop = TRUE]
因此,
名称

 names(DF1[,DF1==0])
 #[1] "bus"  "male"
或者使用
drop=FALSE应该可以

 colnames(DF1[,DF1==0, drop=FALSE])
 #[1] "bus"  "male"
或者另一个选项是使用
as.vector
将逻辑矩阵转换为逻辑向量,并且它应该按照预期工作

 colnames(DF1[as.vector(DF1==0)])
 #[1] "bus"  "male"
注意:这不是一般情况,因为有多行,我们可能需要使用
colSums(DF1)==0

数据
DF1我想知道你是否可以用你自己的答案来结束这个重复@davidernburg谢谢你的链接。我也认为它是重复的,但这可能不是完全重复的。
 colnames(DF1[,DF1==0, drop=FALSE])
 #[1] "bus"  "male"
 colnames(DF1[as.vector(DF1==0)])
 #[1] "bus"  "male"
 DF1 <- data.frame(home=1, train=3, bus=0, male=0, female=1)