【问题标题】:Proper use of *apply with a function that takes strings as inputs正确使用 *apply 与将字符串作为输入的函数
【发布时间】:2013-11-05 23:20:06
【问题描述】:

我有兴趣将 Record-Linkage 包中的 levenshteinSim 函数应用于字符串向量(关于函数 here 的讨论很好)。

想象一下,我有一个名为 codes 的向量:"A","B","C","D" 等; 还有一个叫tests的向量:"A","B","C","D"

使用sapply 来针对codes 的向量测试“测试”中的特定值,

sapply(codes,levenshteinSim,str2=tests[1])

我希望得到一个列表或向量(如果我犯了术语错误,我深表歉意):[score1] [score2] [score3]

不幸的是,输出是对tests[1] 中的值与c("A","B","C","D", ...) 的测试——单个值。

最终,我想将*apply 这两个向量相互对立以生成长度为len1*len2 的矩阵——但我不想继续前进,直到我明白自己做错了什么。

谁能提供指导?

【问题讨论】:

    标签: string r


    【解决方案1】:

    我不确定问题出在哪里:

     library(RecordLinkage)
     sapply(codes,levenshteinSim,str2=test)
         A B C D
    [1,] 1 0 0 0
    [2,] 0 1 0 0
    [3,] 0 0 1 0
    [4,] 0 0 0 1
    

    当 str2 只是一项时,你会得到一个长度为 4 的向量。

    【讨论】:

    • 感谢您的回复@DWin。我将不得不从我的数据中获取一些样本来进行测试。注意:我正在“降低”每个元素(因为 levenshteinSim 区分大小写)。我不确定这会如何影响事情。
    猜你喜欢
    • 2014-02-11
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    相关资源
    最近更新 更多