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

如何计算两个数据框列表中首次出现"A"的索引差值?

计算两个列表对应向量中首次"A"的索引差值

问题回顾

你有两个字符向量列表lst1和lst2,需要对列表中名称对应的元素,计算lst1元素里首次出现"A"的索引减去lst2对应元素里首次出现"A"的索引。示例中:

  • lst1$4首次"A"的索引是4,lst2$4首次"A"的索引是3,差值为1
  • lst1$7和lst2$7均无"A",这类情况可返回NA(或按需调整)

实现代码

首先定义一个函数,用于提取单个向量中首次"A"的索引:

get_first_A_index <- function(vec) {
  # 找到所有"A"的位置,取第一个;无"A"则返回NA
  idx <- which(vec == "A")[1]
  if (is.na(idx)) return(NA)
  idx
}

然后用mapply遍历两个列表的对应元素,计算差值:

# 构造示例中的测试列表
lst1 <- list(
  `4` = c("N", "N", "N", "A", "A", "A", "A", "N"),
  `7` = c(rep("N", 8))
)

lst2 <- list(
  `4` = c("N", "N", "A", "A", "A", "A", "A", "N", "N", "N"),
  `7` = c(rep("N", 10))
)

# 计算索引差值
index_diff <- mapply(function(x, y) {
  get_first_A_index(x) - get_first_A_index(y)
}, lst1, lst2)

# 查看结果
index_diff

结果说明

运行上述代码后,输出结果为:

4   7 
  1  NA 

其中4对应的差值是1,符合示例预期;7因无"A",返回NA。如果需要将无"A"的情况返回0,只需修改get_first_A_index函数,把return(NA)改成return(0)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:35:35