如何使用for循环减少编译时间

2024-01-11

我有下面的 R 代码。

客观的 :我正在尝试检查中存在的字符串kind对象是由以下内容组成的word通过迭代和比较两个对象的角色定位来识别对象。如果它是另一个的复合,则返回正值,否则返回负值。

问题陈述 :

如果 kind 对象值在每个字符串中包含最少的字符c('abcde','crnas','onarous','ravus')它给了我更好的回应。如果 kind 对象中存在的字符串具有更长的字符串长度 ( 10 ^ 5)c('cdcdc.....{1LCharacters}','fffw....{1LCharacters}','efeffeffef..{1LCharacters}')。需要更多时间来处理。有没有更好的方法把它放进去,这样编译时间可以相对较小。

非常感谢建议/更正。

word <- "coronavirus"
total <- "3"
kind <- c('abcde','crnas','onarous','ravus')

invisible(lapply(kind,function(x) {

    if (length(x) > length(word)) {
    cat("NEGATIVE",sep='\n') 
    }
    index=1;
    for (i in seq(from=1,to=nchar(word)-1,by=1)) {
    
                    
        if(substr(word,i,i) == substr(x,index,index))
        {
          index<-index+1;
        }           

    }
    if (index == nchar(x))
    {
        cat("POSITIVE",sep='\n')
    }
    else
    {
      cat("NEGATIVE",sep='\n')   
    }   
}))

Output :

NEGATIVE
POSITIVE
NEGATIVE
POSITIVE

你还可以这样做:

vals <- attr(adist(kind, word,counts = TRUE), 'counts')[,,3]
ifelse(vals>0, 'NEGATIVE', 'POSITIVE')
[1] "NEGATIVE" "POSITIVE" "NEGATIVE"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用for循环减少编译时间 的相关文章

随机推荐