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

如何在含多1值的indicator向量周边生成指定大小的标记区域?

解决方案

核心思路是:先提取所有indicator为1的行号,针对每个目标行号生成前后指定范围的行号区间,合并所有区间后标记对应行即可处理多个1的场景。

步骤1:构造初始数据

library(dplyr)

# 创建初始数据框
df <- tibble(row = 1:20,
             indicator = rep(c(rep(0, 5), 1, rep(0, 4)), 2))

步骤2:定义生成标记列的函数

# 输入数据框和区域大小N,返回对应的标记列
get_region <- function(data, n) {
  # 计算目标行前后需要覆盖的行数(N为奇数时,前后各(n-1)/2行)
  offset <- (n - 1) %/% 2
  # 提取所有indicator为1的行号
  target_rows <- data$row[data$indicator == 1]
  # 生成每个目标行对应的标记行范围
  marked_rows <- unlist(lapply(target_rows, function(x) seq(x - offset, x + offset)))
  # 过滤掉超出数据框行号范围的数值
  marked_rows <- marked_rows[marked_rows %in% data$row]
  # 将行号匹配结果转为0/1标记
  as.integer(data$row %in% marked_rows)
}

步骤3:生成所需的region列

# 添加N=1、3、5对应的标记列
df <- df %>%
  mutate(region_n1 = get_region(., 1),
         region_n3 = get_region(., 3),
         region_n5 = get_region(., 5))

# 查看最终结果
print(df, n = 20)

运行后即可得到与示例一致的输出,该方法支持任意数量的indicator=1的行,且能灵活扩展不同大小的区域标记。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:40:21