【问题标题】:Finding string position (index) in another string for each row of a data.frame为data.frame的每一行查找另一个字符串中的字符串位置(索引)
【发布时间】:2017-01-07 17:35:28
【问题描述】:

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

【问题讨论】:

    标签: r string


    【解决方案1】:

    我们可以的

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      相关资源
      最近更新 更多