r - 在两个向量的某些值之间创建序列

标签 r vector sequence between

我目前正在尝试在长度不同的不同向量的值之间创建序列。

假设我有以下两个向量 a 和 b:

a<-c(1, 8, 14, 34, 46, 55)
b<-c(3, 6, 12, 13, 18, 42, 49, 50, 57, 200)

我想生成第三个向量,它显示 a 的值与 b 的下一个最高值之间的序列(此处:1:3 1,2,38:128,9,10,11,1214 :1814,15,16,17,18 等等,直到最后 55:5755,56,57 >)。

使用maply没有产生预期的结果。

最佳答案

我们可以使用findInterval根据'a'的值对'b'进行子集化,然后使用Map得到相应的序列(:=) 'a' 的元素和 'b' 的子集元素之间

Map(`:`, a, b[findInterval(a, b) + 1])
#[[1]]
#[1] 1 2 3

#[[2]]
#[1]  8  9 10 11 12

#[[3]]
#[1] 14 15 16 17 18

#[[4]]
#[1] 34 35 36 37 38 39 40 41 42

#[[5]]
#[1] 46 47 48 49

#[[6]]
#[1] 55 56 57

关于r - 在两个向量的某些值之间创建序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46142751/

相关文章:

c++ - 必须首先打印vector <int> v1中最接近整数x的数字

c++ - 将特征矩阵转换为 std::vector<std::array<>> 形式

c++ - 这里有循环依赖吗?

oracle - Hibernate + oracle 序列 + 触发器

r - 来自数据表的最频繁

r - 如何在 R 中禁用 "Save workspace image?"提示?

r - 如何将 table1 包中的表保存到 CSV 文件中

r - tufte_html 格式可以在 bookdown/rmarkdown 中拆分为章节吗?

python - 计算 pandas 中的重复序列

algorithm - 最长递增子序列——线性时间解?