R 确定两个给定整数/行之间的整数/行

R 确定两个给定整数/行之间的整数/行,r,read-text,R,Read Text,我在r中使用了大量文本,我已经识别了包含关键文本的行号。我将它们存储为两个不同的对象:location1和location2 现在,我想创建一个位于位置1和位置2之间的行列表 location1 int [1:393] 4 21 38 57 75 93 110 127 144 166 ... location2 int [1:393] 6 23 41 59 77 95 112 129 147 168 ... 因此,我正在寻找如下输出: 5 22 39 40 58 76 111 128 14

我在r中使用了大量文本,我已经识别了包含关键文本的行号。我将它们存储为两个不同的对象:location1和location2

现在,我想创建一个位于位置1和位置2之间的行列表

location1  int [1:393] 4 21 38 57 75 93 110 127 144 166 ...
location2  int [1:393] 6 23 41 59 77 95 112 129 147 168 ...
因此,我正在寻找如下输出:

5 22 39 40 58 76 111 128 145 146 167 
这比位置1+1更复杂,因为在
location1
location2
之间存在多行。例如,当
location1
为38,而
location2
为41时,我希望在输出中得到39和40

我该怎么做


谢谢

我们可以使用
Map

unlist(Map(`:`, location1 + 1, location2 - 1))
#[1]   5  22  39  40  58  76  94 111 128 145 146 167

或者使用
rep

v1 <- location2 - location1 -1
rep(location1, v1) + sequence(v1)
#[1]   5  22  39  40  58  76  94 111 128 145 146 167
也可以根据需要进行更改

tmp <- sweep(df11 , 2,c(1, -1), `+`)

do.call(Map, c(f = `:`, unname(tmp)))

tmp否,因为有时两个位置之间有多行扫描请添加这些情况并期望输出,以便变得清晰。很抱歉,当我尝试运行它时,您的解决方案对我不起作用。它对我来说运行正常
tmp <- sweep(df11 , 2,c(1, -1), `+`)

do.call(Map, c(f = `:`, unname(tmp)))
location1 <- c(4, 21, 38, 57, 75, 93, 110, 127, 144, 166)

location2 <- c(6, 23, 41, 59, 77, 95, 112, 129, 147, 168)
df1 <- data.frame(location1, location2)
 unlist(Map(seq, location1 + 1, location2 - 1))
 [1]   5  22  39  40  58  76  94 111 128 145 146 167