在dplyr mutate上下文中,我想通过purrr:map选择应用函数的列,并使用另一列的值。
让我们拿一个测试数据框架举例。
我想要应用以下函数。
让我们拿一个测试数据框架举例。
test <- data.frame(a = c(1,2), b = c(3,4), selector = c("a","b"))
我想要应用以下函数。
calc <- function(col)
{res <- col ^ 2
return(res)
}
我正在尝试类似这样的东西:
test_2 <- test %>% mutate(quad = map(.data[[selector]], ~ calc(.x)))
我的期望结果是:
a b selector quad
1 1 3 a 1
2 2 4 b 16
但我得到
Error in local_error_context(dots = dots, .index = i, mask = mask) :
promise already under evaluation: recursive default argument reference or earlier problems?
我知道.data[[var]]
只应在函数编程的特殊上下文中使用,但即使我将其包装在函数或类似的东西中,也无法完成它。尝试使用tidy-selection会出现错误,选择助手只能在特殊的dplyr动词中使用,而不能在像purrr:map这样的函数中使用。
如何在dplyr中使用purrr map中的动态变量
提示我使用get()
和匿名函数,但在这种情况下也不起作用。