r - 在 R 的 grep 函数中使用字符
问题描述
我有 600 个字符n我想将使用所有这些字符的grep函数应用于b
n
[1] "KO_2" "KO_12" "WT_14" "KO_16" "WT_21" "WT_35" "KO_41" "KO_44" "KO_45" "KO_47" "KO_50" "KO_57"
[13] "WT_59" "KO_60" "KO_64" "KO_65" "KO_69" "KO_70" "KO_72" "KO_81" "KO_87" "KO_88" "WT_95" "WT_105"
b
[1] "KO_2" "WT_3" "WT_4" "KO_6" "WT_7" "WT_8" "WT_9" "KO_10" "KO_11" "KO_12" "WT_13" "WT_14"
[13] "WT_15" "KO_16" "WT_17" "KO_18" "WT_19" "WT_20" "WT_21" "WT_22" "WT_24" "WT_25" "WT_26" "WT_27"
[25] "WT_28" "WT_29" "WT_30" "KO_31" "KO_32" "KO_33" "KO_34" "WT_35" "KO_37" "KO_38" "WT_39" "KO_40"
[37] "KO_41" "KO_42" "KO_44" "KO_45" "WT_46" "KO_47" "KO_48" "WT_49" "KO_50" "KO_51" "KO_52" "WT_53"
[49] "WT_54" "KO_55" "KO_56" "KO_57" "WT_59" "KO_60" "KO_61" "WT_62" "KO_63" "KO_64" "KO_65" "WT_66"
解决方案
n <- c(letters[15:20], '1', '2', '3')
b <- letters
unlist(sapply(n, function(l) which(b == l)))
# o p q r s t
# 15 16 17 18 19 20
您可以使用which
,它会告诉您测试为真的索引。现在您只需将其应用于您的字母向量即可进行测试。
编辑 :
正如@Chris 所提到的,如果您有多个匹配项,则必须小心。在这种情况下,您可以删除unlist()
并且结果将是包含匹配元素索引的向量列表。请注意,不匹配的元素也在此列表中,但它们对应的向量为空 ( integer(0)
)
n <- c("KO_2","KO_12","WT_14","KO_16","WT_21")
b <- c("KO_2","WT_14","KO_12","WT_14","KO_44","KO_45","KO_47","WT_35","KO_41")
sapply(n, function(l) which(b == l))
# $KO_2
# [1] 1
#
# $KO_12
# [1] 3
#
# $WT_14
# [1] 2 4
#
# $KO_16
# integer(0)
#
# $WT_21
# integer(0)
推荐阅读
- localhost - 我无法使用 chrome 打开 localhost [错误 400]
- node.js - 具有单个文档字符串数组字段的服务器端分页
- flutter - Flutter 实现干净架构的方式
- javascript - 如何用实际日期和所有剩余日期填充数组 -1
- python - 使用 Python 将 JSON 转换为 Google 表格
- npm - postCss 不适用于 laravel 外部的 laravel-mix、scss 和 tailwindcss
- compression - 随机字符串的最佳压缩算法
- node.js - 为什么我在尝试安装我的 react 应用程序时一直收到错误消息
- swiftui - SwiftUI Picker 不与 ObservedObject 绑定
- php - Swift Mailer 不工作并且没有给出错误信息