在数据框的每一行中查找一个字符串在另一个字符串中的位置(索引)

3
在我的数据框中,有两列文本(例如str1和str2)。我想要添加一列,对于每行表示str2在str1中的位置。
以下是一个数据框的示例:
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'))

我想要添加一列,表示每行中 str2 在 str1 中的位置。
这个不起作用:
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
1个回答

3
我们可以做到。
dt$str2.pos <- diag(sapply(dt$str2, function(x) regexpr(x, dt$str1)))
dt$str2.pos
#[1]  1  1 15  1

如果我们要对应行进行操作,可以使用 mapply / Map 函数。

mapply(regexpr, dt$str2, dt$str1)
#[1]  1  1 15  1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接