老码农学生信技术学习

R TIP: 始终使用drop=FALSE

2019-07-20  本文已影响0人  Angeladaddy

在提取数据框或者maxtrix数据的时候我们喜欢使用[,], 那么我们应该养成习惯:始终使用drop=FALSE参数。
R中,单列数据框经常会被转换成因子:

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

结论

不管对象是不是单列,始终加上drop=FALSE参数,write mtcars[, c("mpg", "cyl"), drop = FALSE] instead of mtcars[, c("mpg", "cyl")]

上一篇 下一篇

猜你喜欢

热点阅读