在我的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
答案 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