我在R中有一个data.frame,列中也有列名。 我有另一个带有0和-1的data.frame,它控制在后续分析中从第一个data.frame使用哪些列。 我现在遇到了一个我无法解决的问题。
首先,“违规”代码行是:
covar.data<-covar.data[,!onoff]
仅供参考我确认covar.data
和onoff
都是data.frames。
当我使用onoff
选择2个或更多列时运行此操作时,一切正常,结果covar.data
仍然是data.frame - 这很重要,因为我需要使用该列在我的分析的其余部分中命名。
但是,如果我onoff
只选择了一列,covar.data
就变成了一个矩阵!这是一个问题,因为列名也消失了!
我试过了
covar.data<-as.data.frame(covar.data[,!onoff])
和
covar.data<-as.data.frame(covar.data[,!onoff], col.names=TRUE)
但这对列名的消失没有影响。
我不明白为什么R决定将data.frame转换为矩阵(仅限于我留下一列的时间),我无法弄清楚如何保留data.frame PLUS列名。
答案 0 :(得分:1)
如果选择data.frame
的单个列,则R假定您要将该数据提取为向量而不是返回另一个data.frame(在大多数情况下,这正是您想要的行为)。但是,如果您确实希望将该单个列保留为data.frame
,那么您应该
covar.data[,!onoff, drop=F]