R Tips: drop=FALSE

2020-03-27  本文已影响0人  Thinkando

避免单列数据框转换成因子

R TIP: 始终使用drop=FALSE

d <- data.frame(x = seq_len(3))
print(d)
#>   x
#> 1 1
#> 2 2
#> 3 3
d[order(-d$x), ]
#> [1] 3 2 1
# 注意,我们得到的是因子!

上面例子中,我们的本意是对x进行排序,结果得到了因子,d[,]也会得到同样结果

而加上drop=FALSE就能避免这种 情况

d[order(-d$x), , drop = FALSE]
#>   x
#> 3 3
#> 2 2
#> 1 1
# 得到的依然是数据框

为了安全起见,在对数据框取数据时鼓励以下类似list的做法(毕竟数据框可以看作是column的list)

d[["x"]]
#> [1] 1 2 3

d$x
#> [1] 1 2 3

d[[1]]
#> [1] 1 2 3
上一篇 下一篇

猜你喜欢

热点阅读