在data.frame

时间:2017-01-07 09:26:30

标签: r string

在我的data.frame中,我有两列文本(例如str1和str2)。我想添加一个列,指示每行中str2在str1中的位置。

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'))

我想添加一个列,指示每行中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 个答案:

答案 0 :(得分: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