14

2 つの文字変数 (オブジェクトの名前) があり、最大の共通部分文字列を抽出したいと考えています。

a <- c('blahABCfoo', 'blahDEFfoo')
b <- c('XXABC-123', 'XXDEF-123')

結果として次のことが必要です。

[1] "ABC" "DEF"

これらのベクトルを入力として使用すると、同じ結果が得られるはずです。

a <- c('textABCxx', 'textDEFxx')
b <- c('zzABCblah', 'zzDEFblah')

これらの例は代表的なものです。文字列には識別要素が含まれており、各ベクトル要素のテキストの残りの部分は共通ですが不明です。

次のいずれかの場所に解決策はありますか (優先順):

  1. ベースR

  2. おすすめパッケージ

  3. CRAN で利用可能なパッケージ

想定される重複への回答は、これらの要件を満たしていません。

4

3 に答える 3

10

そのためのCRANパッケージは次のとおりです。

library(qualV)

sapply(seq_along(a), function(i)
    paste(LCS(strsplit(a[i], '')[[1]], strsplit(b[i], '')[[1]])$LCS,
          collapse = ""))
于 2013-04-24T17:18:39.830 に答える
0

やりたくないことが多すぎるので、代わりにこれをしました:

Rgames> for(jj in 1:100) {
+ str2<-sample(letters,100,rep=TRUE)
+ str1<-sample(letters,100,rep=TRUE)
+ longs[jj]<-length(lcstring(str1,str2)[[1]])
+ }
Rgames> table(longs)
longs
 2  3  4 
59 39  2

一致する文字列の実際の分布の統計的推定をしたい人はいますか? (lcstringは総当たりのホームロール関数です。出力にはすべての最大文字列が含まれているため、最初のリスト要素のみを確認します)

于 2013-04-25T18:40:30.250 に答える