0

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

> 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 ...

始终返回 10*k 数据帧的正确 R 语法是什么?

4

1 回答 1

3

您被 R 中臭名昭著drop的“功能”所困扰。请使用str(df[ , colselect, drop=FALSE]).

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

有关该主题(和其他内容)的更多乐趣,请阅读R-inferno的第 8.1.44 节。此外,在您的 R 解释器上,尝试?'['.

于 2013-07-15T19:24:11.283 回答