drop(df)
和df[which1, which2, drop=T]
如何运作?我找不到任何例子......
我尝试了什么:
> df = data.frame(a = rep(3,3), b = rep(3,3))
> df$a = as.factor(df$a)
> df$b = as.factor(df$b)
>
> drop(df)
a b
1 1 3
2 2 3
3 3 3
>
> df[,]
a b
1 1 3
2 2 3
3 3 3
没有丢弃任何东西(第3行和第b列都有一个级别)。任何帮助都表示赞赏。感谢。
更新:谢谢@Paul Hiemstra
我意识到它不会丢弃重复数据,但会丢弃多余的维度
> df[1, ]
a b
1 1 3
> dim( df[1, ] )
[1] 1 2
>
> df[ ,1]
[1] 1 2 3
Levels: 1 2 3
> dim( df[ ,1] )
NULL
在上面的例子中,似乎R不能使df[1, ]
成为一个向量,因为列a和b进行区分。
R可以使df[ ,1]
为向量(dim = NULL)
答案 0 :(得分:5)
来自drop
的文档:
删除只有一个级别的数组的维度。
因此,给出以下矩阵只有一列:
m = matrix(1:10, 10, 1)
Drop将此缩小为:
drop(m)
[1] 1 2 3 4 5 6 7 8 9 10
这是一个载体。
一般来说,drop
如果长度为1,则会丢弃数组或矩阵的维度,实际上是多余的。
在df[, drop = TRUE]
中使用它时我引用了?'['
的文档:
降
对于矩阵和数组。如果为TRUE,则将结果强制转换为可能的最低维度(请参阅示例)。这仅适用于提取元素,而不适用于替换元素。有关详细信息,请参阅drop。
对于data.frame
,drop具有类似的效果:一列的data.frame
缩减为矢量。