美文网首页
R Tips: drop=FALSE

R Tips: drop=FALSE

作者: Thinkando | 来源:发表于2020-03-27 14:55 被阅读0次

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

R TIP: 始终使用drop=FALSE

  • 在提取数据框或者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")]

相关文章

网友评论

      本文标题:R Tips: drop=FALSE

      本文链接:https://www.haomeiwen.com/subject/ojbluhtx.html