首页 > 解决方案 > 要应用的 2D 参数列表

问题描述

可悲的是无法意识到如何在 R 中做到这一点,但这个想法很简单。

我想要的是一个范围内的数字对列表,其中第一对是第一个值和第一对最大长度的总和,最后我应该有类似的东西:

somefun <- function(start, end, step){...}
l <- somefun (5, 30, 5)
l 
#[[1]]
#[[1]][[1]]
#[1] 5
#
#[[1]][[2]]
#[1] 10
#
#[[2]]
#[[2]][[1]]
#[1] 11
#
#[[2]][[2]]
#[1] 16
#
#[[3]]
#[[3]][[1]]
#[1] 17
#
#[[3]][[2]]
#[1] 22
#
#[[4]]
#[[4]][[1]]
#[1] 23
#
#[[4]][[2]]
#[1] 28
#
#[[5]]
#[[5]][[1]]
#[1] 29

#[[5]][[2]]
#[1] 30

因此,最终列表应该具有第一个start和最后一个end值,但每个列表内的差异不应大于步长。

另外,我不知道这是否是最好的方法,但我的目标是通过这个值lapply来使用网格构建一个绘图gredExtra::grid.arrange

所以列表应该适合这个代码

p_list = lapply(myRanges, function(a,b){
  my_gg_function(myData[a:b], font=f)
})

do.call(gridExtra::grid.arrange, c(p_list, ncol=2))

提前致谢

标签: rarraylistmultidimensional-array2dlapply

解决方案


这个怎么样

somefun <- function(start, end, step){
  starts <- seq(start, end, step+1)
  ends <- pmin(starts + step, end)
  mapply(list, starts, ends, SIMPLIFY = FALSE)
}
somefun(5, 30, 5)

我们只是根据需要使用基本seq()和修剪。


推荐阅读