如何将工作区中多个字符型开关变量转换为逻辑型并重新赋值?
批量将字符型开关变量转为逻辑型并重新赋值
这里提供两种简洁的实现方式,能把转换后的逻辑值重新写入工作区:
方法一:命名列表+环境写入
先给转换后的结果绑定原变量名,再一次性写入全局环境:
ls() %>% str_subset("switch_") %>% map(get) %>% map(as.logical) %>% set_names(ls() %>% str_subset("switch_")) %>% list2env(envir = .GlobalEnv)
核心逻辑:
set_names让转换后的每个逻辑值和原变量名一一对应,生成命名列表list2env把命名列表里的元素直接转成工作区的变量,指定.GlobalEnv确保写入全局环境
方法二:逐个遍历赋值
如果偏好更直观的逐个赋值逻辑,用walk2同时处理变量名和对应值:
# 先获取所有开关变量名和转换后的值 switch_vars <- ls() %>% str_subset("switch_") switch_values <- switch_vars %>% map(get) %>% map(as.logical) # 逐个赋值到全局环境 walk2(switch_vars, switch_values, ~ assign(.x, .y, envir = .GlobalEnv))
核心逻辑:
walk2是专门执行副作用操作的工具(比如赋值),不会返回多余结果assign负责把转换后的逻辑值绑定到对应的变量名上
执行任意一种方法后,用class(switch_1)就能看到变量类型已经变成logical了。
内容的提问来源于stack exchange,提问作者J K
相关产品推荐
相关产品推荐

