如何使用 tidyr::spread 值参数并将其值存储为字符串变量?

How to use the tidyr::spread value parameter with its value stored as a string variable?

我在一个循环中 运行 几个 tidyr::spread,其中 value 参数的值发生变化。但是,value 需要 "the bare (unquoted) name"...

mydata <- structure(list(ID = c(26242055, 26242254, 26243093, 26248278, 
26252563, 26255141, 26242055), Target = c(0, 0, 0, 0, 0, 0, 0
), opendt = c("2013-01-31", "2013-01-31", "2013-01-31", "2013-01-31", 
"2013-01-31", "2013-01-31", "2013-01-31"), txn_bc_am_cnt = c(1, 
2, 1, 27, 1, 2, 1), txn_bc_am_sum = c(200000, 19040.02, 35000, 
143227.5, 11910, 32212.8, 200000), delta = c(1, 1, 2, 2, 2, 3, 
3)), .Names = c("ID", "Target", "opendt", "txn_bc_am_cnt", "txn_bc_am_sum", 
"delta"), row.names = c(NA, 7L), class = "data.frame")

x <- c("txn_bc_am_sum", "txn_bc_am_cnt")

所以这有效:

tidyr::spread(mydata[,c("ID", "Target", "opendt", x[1], "delta")], 
key = delta, value = txn_bc_am_sum)

但这失败了:

tidyr::spread(mydata[,c("ID", "Target", "opendt", x[1], "delta")], 
key = delta, value = x[1])

我怎样才能让它与更改 value 一起工作?我确定有一个优雅的解决方法,但我想不通。

tidyr 函数似乎不支持新的 rlang 语法,所以现在最好的办法是使用函数的 ?spread_ 标准评估版本

tidyr::spread_(mydata[,c("ID", "Target", "opendt", x[1], "delta")], 
    key_col = "delta", value_col = x[1])