R 创建一个列表,其中每个元素都是来自给定向量的一对连续成员

R 创建一个列表,其中每个元素都是来自给定向量的一对连续成员,r,split,R,Split,或者,如何将向量拆分为成对的连续成员,并将它们组合在一个列表中 假设你得到了向量 map <-seq(from = 1, to = 20, by = 4) 我的目标是创建以下列表 path <- list(c(1,5), c(5,9), c(9,13), c(13,17)) 但我认为,如果不创建这个辅助数据框架,这是可能的 避免了初始向量(map)过大时性能下降。此外,它还返回一条警告消息,这很正常,但我喜欢避免它们 然后我在stackoverflow上发现了这个(与此不完全一样

或者,如何将向量拆分为成对的连续成员,并将它们组合在一个列表中

假设你得到了向量

map <-seq(from = 1, to = 20, by = 4)
我的目标是创建以下列表

path <- list(c(1,5), c(5,9), c(9,13), c(13,17))
但我认为,如果不创建这个辅助数据框架,这是可能的 避免了初始向量(map)过大时性能下降。此外,它还返回一条警告消息,这很正常,但我喜欢避免它们

然后我在stackoverflow上发现了这个(与此不完全一样,这是针对我的问题的改编版本):


mod_map我们可以在向量上使用
map
(“map”-最好不要使用函数名-它是
purrr
)中的一个函数,删除第一个和最后一个元素并按元素连接

Map(c, map[-length(map)], map[-1])

或者正如@Sotos所提到的,
split
可以使用更快的方法

split(cbind(map[-length(map)], map[-1]), seq(length(map)-1)) 

或者您可以通过
split(cbind(Map[-length(Map)],Map[-1]),seq(length(Map)-1))避免
Map
mod_map <- c(map, map[c(-1,-length(map))])
mod_map <- sort(mod_map)
split(mod_map, ceiling(seq_along(mod_map)/2))
Map(c, map[-length(map)], map[-1])
split(cbind(map[-length(map)], map[-1]), seq(length(map)-1))