【发布时间】:2018-04-15 15:56:40
【问题描述】:
我有一个名称字符向量和一个数字向量列表。我想创建一个包含一列的小标题,其中列名来自字符向量,并且应该用数字向量中的值填充。
这是我尝试过的一个最小示例:
names <- c("col1", "col2")
cols <- list(1:10, 11:20)
map2(.x = !!!rlang::syms(names), .y = cols, ~tibble::tibble(.x = .y))
当我运行它时,我得到一个invalid argument type 错误。据我了解(以及我尝试过的),我不能简单地将names 用作.x。那么列名将是.x,而不是col1 或col2。通过使用syms 并取消引用表达式,我尝试将字符元素从names 转换为我认为需要的名称。
编辑:建议解决方案的基准:
两种建议的解决方案都运行良好且易于阅读。因此,我进行了一个小型基准测试来帮助我选择接受哪种解决方案。使用 !! 的(已接受的)解决方案更快且更短。
Unit: microseconds
expr min lq mean median uq max neval
set_names 1148.635 1163.1985 1210.2218 1168.8840 1201.048 3950.820 100
!! 701.961 713.5295 729.4239 721.2395 734.779 1102.086 100
【问题讨论】: