【问题标题】:Create new vector with all elements between elements of two equal length vectors使用两个等长向量的元素之间的所有元素创建新向量
【发布时间】:2019-05-09 16:54:32
【问题描述】:

我正在清除议会会议记录中的感叹和质问。我已将 PDF 转换为一个向量,其中每个元素都包含一行分钟。

使用正则表达式,我已经确定了感叹词开始的行的索引(它以“(”)开始和结束(以“)”结束),从而产生两个等长的向量。

现在要确定要删除哪些线,我需要创建一个新向量,其中包含起点和终点以及其间的所有线。

举个例子:

start <- c(1, 6, 9, 24)
end <- c(3, 7, 12, 27)

这种情况下的结果向量应该等价于:

interjections <- c(1,2,3,6,7,9,10,11,12,24,25,26,27)

或者:

interjection <- c(1:3, 6:7, 9:12, 24:27)

我确信有一种简单的方法可以做到这一点,但我就是无法让它正常工作。有人可以帮我吗?谢谢!

【问题讨论】:

    标签: r


    【解决方案1】:

    使用Map 或mapply 应该适用于等长向量。如果它们的长度不相等,它将开始回收较短的。

    start <- c(1, 6, 9, 24)
    end <- c(3, 7, 12, 27)
    
    interjection <- Map(`:`, start, end)
    interjection
    [[1]]
    [1] 1 2 3
    
    [[2]]
    [1] 6 7
    
    [[3]]
    [1]  9 10 11 12
    
    [[4]]
    [1] 24 25 26 27
    
    interjections <- unlist(interjection)
    interjections
    [1]  1  2  3  6  7  9 10 11 12 24 25 26 27
    

    【讨论】:

    • @DominicGohla,很高兴它有帮助!当它解决您的问题时,您可以accept the answer :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 2011-06-12
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    相关资源
    最近更新 更多