J. *_*ini 8 r dataframe tibble
Tidyverse 的粉丝经常给出使用小标题而不是数据框的几个优点。它们中的大多数似乎旨在保护用户免于犯错误。例如,与数据框不同,小标题:
,drop=FALSE参数来不从数据中删除维度。$操作员对列名进行部分匹配。我逐渐相信用小标题替换我所有的数据框。这样做的主要缺点是什么?更具体地说,数据框可以做什么而 tibble 不能?
先发制人,我想明确表示,我不是在询问data.table或对 Tidyverse 提出任何大局反对意见。我严格询问小标题和数据框。
从tibbles 的麻烦中,你可以读到:
\n\n\ntibbles 确实没有\xe2\x80\x99t 的麻烦
\n
然而,
\n\n\n一些较旧的软件包由于其替代的子集方法而无法使用 tibbles。他们期望 tib[,1]\n 返回一个向量,而实际上它现在将返回另一个 tibble。
\n
这是@Henrik 在评论中指出的。
\n例如,该length函数不会返回相同的结果:
library(tibble)\ntibblecars <- as_tibble(mtcars)\ntibblecars[,"cyl"]\n#> # A tibble: 32 x 1\n#> cyl\n#> <dbl>\n#> 1 6\n#> 2 6\n#> 3 4\n#> 4 6\n#> 5 8\n#> 6 6\n#> 7 8\n#> 8 4\n#> 9 4\n#> 10 6\n#> # ... with 22 more rows\nlength(tibblecars[,"cyl"])\n#> [1] 1\nmtcars[,"cyl"]\n#> [1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4\nlength(mtcars[,"cyl"])\n#> [1] 32\nRun Code Online (Sandbox Code Playgroud)\n其他示例:
\n\n取子集和子赋值的不变量解释了 的行为与 的tibble不同之处data.frame。
已知这些限制,Hadley 给出的与遗留代码交互的解决方案是:
\n\n\n少数函数不使用 tibbles,因为它们期望 df[, 1] 返回向量,而不是数据框。如果您遇到以下函数之一,请使用 as.data.frame() 将 tibble 返回为数据框:
\n
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |