假设我有一个名为的外部数据库的连接con.
我想dplyr用来重现这个查询
SELECT var1, var2, var3 from myTable LIMIT 10
Run Code Online (Sandbox Code Playgroud)
我试过了
qry <- tbl(con, "myTable") %>%
select(var1) %>%
filter(between(row_number(), 1, 10)
Run Code Online (Sandbox Code Playgroud)
但它没有给出所需的结果,它产生的查询比我之后的查询慢得多.
它产生的查询是
SELECT "var1",
FROM SELECT "var1", row_number() OVER () AS "zzz25"
FROM SELECT "var1" AS "var1"
FROM myTable "yhydrqlhho") "zsdfunxidf"
WHERE zzz25 BETWEEN 1.0 AND 10.0)
Run Code Online (Sandbox Code Playgroud)
当我将此查询发送到数据库时,它会运行很长时间.当我发送
SELECT var1 from myTable limit 10
Run Code Online (Sandbox Code Playgroud)
结果瞬间回来了.
我有一些代码将分组变量指定为字符串。
group_var <- "cyl"
Run Code Online (Sandbox Code Playgroud)
我在 dplyr 管道中使用这个分组变量的当前代码是:
mtcars %>%
group_by_(group_var) %>%
summarize(mean_mpg = mean(mpg))
Run Code Online (Sandbox Code Playgroud)
我对如何替换已弃用的group_by_函数的最佳猜测group_by是:
mtcars %>%
group_by(!!as.name(group_var)) %>%
summarize(mean_mpg = mean(mpg))
Run Code Online (Sandbox Code Playgroud)
这有效,但在使用 dplyr 小插图的编程中没有明确提及。
是否使用!!as.name()首选方式替换group_by_()为group_by()?