R语言mutate_at结合all_of()解决tidyselect弃用警告求助
问题解决:tidyselect外部向量选择弃用警告
你的代码中使用vars(snpcol_start:snpcol_end)选择列范围时触发警告,原因是snpcol_start和snpcol_end属于外部变量(存储列名/位置的对象),在tidyselect 1.1.0及以上版本中,直接用外部变量做列选择的写法已被弃用,需要改用all_of()来明确标识外部向量。同时,mutate_at属于tidyverse旧语法,推荐用更灵活的mutate(across(...))替代。
修改后的代码
snpdata <- snpdata %>% mutate(across(all_of(snpcol_start):all_of(snpcol_end), ~ ifelse(. == 0, "AA", ifelse(. == 1, "AB", .))))
关键说明
all_of():用来告诉tidyselect,括号内的是外部定义的变量,不是直接的列名,符合新的选择规范,消除警告。mutate(across(...)):替代旧的mutate_at,是tidyverse当前推荐的批量列操作语法,功能更全面。- 匿名函数简化:不需要用
list(~ ...),直接写~ ...即可实现批量处理逻辑。
内容的提问来源于stack exchange,提问作者Ahmed Ayub Khan
相关产品推荐
相关产品推荐

