首页 > 解决方案 > 使用两个等长向量的元素之间的所有元素创建新向量

问题描述

我正在清除议会会议记录中的感叹和质问。我已将 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

解决方案


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

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

推荐阅读