purrr::pmap_dfc()中避免临时名称警告的提前命名问题
你遇到的警告是因为pmap_dfc进行列绑定时,会自动为没有指定名称的返回列生成V1、V2这类临时名称,哪怕你后续用set_names重命名,生成临时名称的步骤仍然会触发警告。要彻底避免这个问题,只需要在列绑定的同时完成列名指定,不需要生成中间临时名称即可,以下是两种常用实现方案:
方案1:使用.name_repair参数一步指定列名(最简洁)
该参数是pmap_dfc继承自dplyr列绑定逻辑的配置项,直接在绑定阶段完成列名设置,不会产生临时名称,自然不会触发警告:
library(purrr) library(tibble) num_covariates<-4 num_observations<-1000 betas<-c(1,2,3,4) powers<-c(1,2,3,4) sim_data<-pmap_dfc( .l = lst(grid=rep(num_observations,num_covariates), power=powers), .f = function(grid,power){(1:grid)^power}, .name_repair = ~ paste0("x", seq_along(.x)) )
方案2:让映射返回的每个结果自带列名
如果你需要更灵活的列名控制,可以直接让每次映射返回带列名的单列表格,绑定后自动继承对应名称:
sim_data<-pmap_dfc( .l = lst( grid=rep(num_observations,num_covariates), power=powers, colname = paste0("x", 1:num_covariates) ), .f = function(grid,power,colname){ tibble(!!sym(colname) := (1:grid)^power) } )
内容的提问来源于stack exchange,提问作者Aegis
相关产品推荐
相关产品推荐

