只是想知道在函数中使用潮汐原则的艺术当前的起点是什么。
假设我们的环境中有两个
tibble
,我们想将他们的名字传递给 purrr::map
调用:
library(tidyverse)
t1 <- tribble(
~name,
"foo"
)
t2 <- t1
通过引用它们的名称作为字符串来打印
t1
和t2
,这是有效的:
ls() %>%
map(
~get(.x)
)
但我尝试使用更惯用的潮汐方法并没有成功
ls() %>%
map(
~{{.x}}
)
ls() %>%
map(
~enquo(.x)
)
ls() %>%
map(
~sym(.x)
)
这些都打印对象的名称,而不是它们的内容。
这如何使用 tidyeval 方法工作?
您需要使用
eval()
来评估符号
ls() %>%
map(
~eval(sym(.x))
)
注意这种方式只适用于
sym()
。所以根据你想做什么,你可能必须找到一种方法来评估其他捕获的表达式。