我有一个名称字符向量和一个数字向量列表。我想创建一个包含一列的小标题,其中列名来自字符向量,并且应该用数字向量中的值填充。
这是我尝试过的一个最小示例:
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
as .x
。然后列名将.x
代替col1
or 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