你读过数据库上的 dplyr 小插图吗?你真的应该阅读更多细节。
您似乎混淆了 R 与数据库和代码执行之间的连接。连接允许 R 和数据库之间进行通信 - R 可以将 SQL 查询发送到 db,而 db 可以将结果发回。而已。
dplyr
尝试将一些 R 代码转换为 SQL 代码,以便 SQL 可以在数据库上执行并且您无需自己编写 SQL 即可获得结果。正如小插图所解释的,很少有 R 命令可以翻译。主要dplyr
动词起作用,即 , select
(mutate
虽然不用于 SQLite 的分组数据帧,但是这在 postgres 中可用), group_by
, summarize
, arrange
, filter
。还有基本的数学函数(引自小插图):
- 基本数学运算符:
+, -, *, /, %%, ^
- 数学函数:
abs, acos, acosh, asin, asinh, atan, atan2, atanh, ceiling, cos, cosh, cot, coth, exp, floor, log, log10, round, sign, sin, sinh, sqrt, tan, tanh
- 逻辑比较:
<, <=, !=, >=, >, ==, %in%
- 布尔运算:
&, &&, |, ||, !, xor
- 基本聚合:
mean, sum, min, max, sd, var
其他任何事情,您都会将数据拉入 R 并在其上运行 R 命令。对于head()
不在列表中的 ,您可能会将整个表拉入 R 中,然后查看前 6 行。
对于 Redshift,这对于宽表来说会特别慢 - Redshift 使用列式存储,因此仅拉取所需的列具有强大的性能优势。
此外,正如小插图中所解释的,dplyr
将尽可能长时间地推迟 SQL 评估,从而提高效率。将结果带到 R 的预期方法是collect
,但您的as_data_frame
声音听起来也很有效。