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

在R语言中匹配向量元素与目标字符串的1的位置

仅匹配指定位置为1的字符匹配实现(R语言)

原始代码

pset[[1]] <- c("000100", "100110", "001000", "100000", "100001", "100010")
true <- "000110"

需求说明

需要筛选出pset[[1]]中,所有在true值为1的位置上同样为1的元素索引。例如true的第4、5位是1,pset[[1]]的第二个元素对应位置也为1,期望得到索引结果(若按0起始计数则为1,R默认1起始则为2)。

实现代码

# 提取true中字符为1的位置(按1起始计数)
true_1_pos <- which(strsplit(true, "")[[1]] == "1")

# 遍历pset[[1]]的每个元素,检查指定位置是否全为1
is_match <- sapply(pset[[1]], function(x) {
  x_chars <- strsplit(x, "")[[1]]
  all(x_chars[true_1_pos] == "1")
})

# 获取符合条件的元素索引
# R默认1起始结果
result_1based <- which(is_match)
# 0起始结果(对应用户期望的1)
result_0based <- which(is_match) - 1

print(result_1based)  # 输出 [1] 2
print(result_0based)  # 输出 [1] 1

代码说明

  1. strsplit(true, "")[[1]]将true拆分为单个字符的向量,再用which定位值为"1"的位置。
  2. sapply遍历pset[[1]]的每个元素,拆分后检查指定位置是否全部为"1",返回逻辑向量。
  3. which把逻辑向量转换为符合条件的元素索引,可根据计数习惯选择1起始或0起始的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:40:30