与 sqldf 模糊连接

fuzzy join with sqldf

我期待此代码 return 一个 data.framename = helicase 在第 1 行。我怎样才能与 [=14 进行这种类型的比较=]?

require(data.table)
df <- fread('EC              name
    2.1.1.233       helicase
    4.1.3.3         phosphatase
    1.3.2.1,2.5.4.1 lipase
')
df2 <- fread('     PDB     EC         
    1uay    2.1.1
    5ad4    4.1.3.3   
')


require(sqldf)

sqldf('
select  df2.*
        , df.name
from    df2
        left join df
          on df2.EC like df.EC
')

#    PDB      EC        name
# 1 1uay   2.1.1        <NA>
# 2 5ad4 4.1.3.3 phosphatase

借用类似的答案,您想连接百分号:

sqldf("
select  df2.*
        , df.name
from    df2
        left join df
          on like('%'||df2.EC||'%', '%'||df.EC||'%')")