r - 有什么办法可以为模式匹配功能做 lapply 吗?
问题描述
我正在尝试用参考字符串索引我的子字符串。子字符串有 1 或 2 个不匹配。
substr Ref
1 CTTGTAGG AGGCCTTGTCGGT
2 TATGACT ATTTATGATTGC
我想得到类似的东西
substr Ref substr_start
1 CTTGTAGG AGGCCTTGTCGGT 5
2 TATGACT ATTTATGATTGC 4
Biostrings 的 R matchPattern 函数工作正常。但我想通过循环或 lapply 运行它以获得文件中所有条目的结果。
这是我尝试过的:
for(i in 1:length(file$substr)){
for(j in 1:length(file$Ref)){
matchPattern(file$substr[i], file$Ref[j], max.mismatch=1, min.mismatch=0, with.indels=FALSE, fixed=TRUE, algorithm="auto")
}}
它只是抛出一个错误说“无法为签名'因子'找到函数'matchpattern'的继承方法”
有什么好的方法可以做到这一点吗?也欢迎 R 之外的解决方案:)
解决方案
您可以使用mapply
应用于matchPattern
每个值substr
和返回值。Ref
file
start
library(Biostrings)
file$substr_start <- mapply(function(x, y) {
temp <- matchPattern(x, y, max.mismatch=1, min.mismatch=0,
with.indels=FALSE, fixed=TRUE, algorithm="auto")
start(temp)
}, file$substr, file$Ref)
file
# substr Ref substr_start
#1 CTTGTAGG AGGCCTTGTCGGT 5
#2 TATGACT ATTTATGATTGC 4
推荐阅读
- javascript - 基于昨天在 Firestore 中的“何处”条件?
- python - tkinter 中的 button_press_event(仅左键单击)
- ios - 如何根据 UISwitch 所在的单元格更改 UISwitch 的功能
- javascript - 在 Angular 中使用 push 方法更新对象数组
- c - 遍历单链表不起作用,为什么?
- python - 使用`pathlib.Path().glob()`迭代文件时如何将文件名提取为字符串?
- chilkat-email - Chilkat:如何检查给定电子邮件的回复 - Original-Envelope-Id
- java - 方法 org/hibernate/cache/ehcache/EhCacheRegionFactory.start(Lorg/hibernate/boot/spi/SessionFactoryOptions;Ljava/util/Map;)V 是抽象的
- c# - VAL和Transform的结合与visual fox pro到c#的转换
- oracle - 使用 oracle Web 服务测试客户端时 SOAP 请求失败