You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言优化嵌套ifelse批量生成后测场景名称列的实现方法

优化实现代码

你可以直接用dplyr的行操作+across批量处理,完全不需要堆叠多层ifelse,代码可读性和扩展性都更强:

首选tidyverse简洁解法

library(dplyr)
library(stringr)

data_desired <- data_current %>%
  rowwise() %>%
  mutate(
    # 批量匹配所有配对编号列进行处理
    across(matches("^Posttest\\.Scenario\\.\\d+\\.Pair$"),
           # 用配对编号作为索引,取当前行对应分组的场景名
           ~ c_across(matches("^Posttest\\.Pair\\.\\d+\\.Scenario$"))[.x],
           # 自动生成指定格式的新列名
           .names = "Posttest.Scenario.{str_extract(.col, '\\\\d+')}")
  )

如果需要新列名用空格分隔(和你原代码的Posttest Scenario x格式一致),把.names参数的值改为"Posttest Scenario {str_extract(.col, '\\\\d+')}"即可。


逻辑说明

  1. 沿用你原有的行运算逻辑,不需要调整数据结构
  2. 用正则匹配自动识别所有配对编号列和场景名列,不需要手动写1-5的列名,后续如果增加场景组数不需要改核心逻辑
  3. 直接用配对编号作为索引取对应位置的场景名,逻辑比多层ifelse清晰很多

如果你偏好base R循环实现

for (i in 1:5) {
  pair_val <- data_current[[paste0("Posttest.Scenario.", i, ".Pair")]]
  data_current[[paste0("Posttest.Scenario.", i)]] <- sapply(seq_along(pair_val), function(r) {
    data_current[r, paste0("Posttest.Pair.", pair_val[r], ".Scenario")]
  })
}

内容的提问来源于stack exchange,提问作者vuca438

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 17:33:02