切片具有相同返回类型的数组

时间:2013-07-15 19:22:33

标签: r

根据所选列的数量,数据帧切片的返回类型会发生变化,如下面所示

> dim(df)
[1] 10  5
> colselect
[1]  TRUE FALSE FALSE FALSE FALSE
> colselect2
[1]  TRUE FALSE FALSE  TRUE FALSE
> str(df[,colselect])
 logi [1:10] TRUE TRUE TRUE TRUE FALSE FALSE ...
> str(df[,colselect2])
'data.frame':   10 obs. of  2 variables:
 $ a: logi  TRUE TRUE TRUE TRUE FALSE FALSE ...
 $ b: logi  FALSE TRUE TRUE FALSE TRUE TRUE ...

什么是正确的R语法才能始终获得10 * k的数据帧?

1 个答案:

答案 0 :(得分:3)

你被R中臭名昭着的drop'功能'咬了。请使用str(df[ , colselect, drop=FALSE])

对于“交互式”方便,如果您选择的只是维度的单个元素,则R倾向于删除数组的其他维度。因此,10 x 1 data.frame成为长度为10的向量。

有关该主题(以及其他内容)的更多乐趣,请阅读R-inferno的第8.1.44节。另外,在你的R口译员上,试试?'['