R 在两个向量的特定值之间创建序列

R 在两个向量的特定值之间创建序列,r,vector,sequence,between,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我们可以使用findInterval根据“a”的值对“b”进行子集划分,然后使用Map获得“a”的元素和“b”的子集元素之间的对应序列(:=) Map(`:`, a, b[findInterval(a, b) + 1]) #[[1]] #[1] 1 2 3

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

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

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

a我们可以使用
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

您好,我有一个额外的问题:代码在我95%的数据中运行良好。但是,在某些情况下(与以前相同结构的输入数据),代码会导致“在.Primitive(“:”)中出错(点[[1L]][[26L]],点[[2L][[26L]]):NA/NaN参数”输出。我不明白为什么。“NA/NaN参数”似乎表示没有要处理的数据,但我已经手动检查了前面的步骤。你对此有什么解释吗?@sant你能检查一下tehre是不是只有NA/NaN。在这种情况下,使用一个
if/else
条件来解决这个问题是的,整个列表都不起作用。以最初文章中的a和b为例:我运行了两个结构类似的列表,结果是NA/NaN错误。您能否指定以何种方式包含if/else条件?谢谢大家!@sant你能用一个小的可复制的例子更新一下吗?这样我们就可以在同一页上了。很好的回答,“[1]”最后是什么意思?
lapply(a, function(x) x:b[b>x][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