2017-01-07 9 views
3

私のdata.frameには、テキスト(str1とstr2)を持つ2つのカラムがあります。私は各行のstr1のstr2の位置を示す列を追加したいと思います。 data.frameためdata.frameの各行の文字列位置(インデックス)を別の文字列で見つける

例:

dt <- data.frame(str1 = c('ab/some words,cd/some words', 
'cd/some words,ab/some words', 'ab/some words,cd/some words', 'ef/some 
words,ab/some words'), str2 = c('ab', 'cd', 'cd', 'ef')) 

Iは、行ごとにSTR1にSTR2の位置を示す列を追加します。

これは動作しません:

dt$str2.pos <- regexpr(dt$str2, dt$str1) 

私はこのような出力を取得しようとしている:

      str1 str2 str2.pos 
1 ab/some words,cd/some words ab  1 
2 cd/some words,ab/some words cd  1 
3 ab/some words,cd/some words cd  15 
4 ef/some words,ab/some words ef  1 

答えて

3

我々は

dt$str2.pos <- diag(sapply(dt$str2, function(x) regexpr(x, dt$str1))) 
dt$str2.pos 
#[1] 1 1 15 1 

を行うことができます対応する行に対してこれを行う場合は、を使用します

mapply(regexpr, dt$str2, dt$str1) 
#[1] 1 1 15 1 
関連する問題