R矩阵和data.frame混淆

时间:2014-06-10 18:27:32

标签: r dataframe

我在R中有一个data.frame,列中也有列名。 我有另一个带有0和-1的data.frame,它控制在后续分析中从第一个data.frame使用哪些列。 我现在遇到了一个我无法解决的问题。

首先,“违规”代码行是:

covar.data<-covar.data[,!onoff]

仅供参考我确认covar.dataonoff都是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列名。

1 个答案:

答案 0 :(得分:1)

如果选择data.frame的单个列,则R假定您要将该数据提取为向量而不是返回另一个data.frame(在大多数情况下,这正是您想要的行为)。但是,如果您确实希望将该单个列保留为data.frame,那么您应该

covar.data[,!onoff, drop=F]