我有2个值的向量,我从.pdf文件中提取,表示两个不同关键字的位置。 vector.1是第一个关键字,而vector.2是第二个关键字。所以我需要使用下面的内容提取其间的所有行。
df.1< - df [vector.1 [1]:vector.2 [1],]
我设法使用循环遍历其他文档的所有向量,但对于此特定文件,由于其结构,它具有不均匀的位置。
vector.1 <- c(12, 85, 144, 188, 233, 285, 338, 384, 426, 469, 512, 558, 613, 669, 713, 758, 808, 859, 908, 964, 1046, 1090, 1126, 1149, 1216, 1267, 1346, 1423, 1464, 1513, 1560, 1607, 1665, 1718, 1763, 1810, 1856, 1908, 1938)
vector.2 <- c(48, 53, 111, 116, 155, 160, 198, 203, 250, 255, 303, 308, 350, 355, 392, 397, 435, 440, 478, 483, 523, 528, 578, 583, 635, 640, 679, 684, 723, 728, 773, 778, 824, 829, 871, 876, 929, 934, 1008, 1017, 1091, 1096, 1182, 1187, 1232, 1237, 1308, 1313, 1385, 1390, 1430, 1435, 1478, 1483, 1525, 1530, 1572, 1577, 1629, 1634, 1683, 1688, 1729, 1734, 1776, 1781, 1821, 1826, 1874, 1879, 1967, 1972)
如你所见,vector.1 [2]大于vector.2 [2],实际位置应该是vector.2 [3]。无论如何编写代码来匹配每个向量[i],以便所需的结果如下所示:
vector.3 <- c(48, 111, 155, 198, 250, 303, 392, 435, ....)
谢谢!
答案 0 :(得分:0)
如果你试图将vector.2中的特定值提取到另一个vector.3中,这应该做,只要索引遵循以2分隔的序列。你可以通过提供开始和结束索引使用seq生成一系列索引和相应的增量。
vector.3 <- vector.2[seq(1,length(vector.2),by=2)]
[1] 48 111 155 198 250 303 350 392 435 478
[11] 523 578 635 679 723 773 824 871 929 1008
[21] 1091 1182 1232 1308 1385 1430 1478 1525 1572 1629
[31] 1683 1729 1776 1821 1874 1967
答案 1 :(得分:0)
vector.2[rowSums(outer(vector.1,vector.2,">"))+1]
[1] 48 111 155 198 250 303 350 392 435 478 523 578 635 679 723 773 824 871 929
[20] 1008 1091 1091 1182 1182 1232 1308 1385 1430 1478 1525 1572 1629 1683 1729 1776 1821 1874 1967
[39] 1967
您也可以vector.2[colSums(sapply(vector.1,">",vector.2))+1]
答案 2 :(得分:0)
或者您希望vector.2
的最小值大于vector.1
的每个值吗?...
sapply(vector.1, function(x) min(vector.2[vector.2>x]))
[1] 48 111 155 198 250 303 350 392 435 478 523 578 635 679 723 773 824 871 929 1008 1091 1091 1182
[24] 1182 1232 1308 1385 1430 1478 1525 1572 1629 1683 1729 1776 1821 1874 1967 1967