如果我有一个矢量:
c(17,18,19)
我想要
c(17:17+5, 18:18+5, 19:19+5)
或换句话说:
c(17, 18, 19, 20, 21, 22, 18, 19, 20, 21, 22, 23, 19, 20, 21, 22, 23, 24)
如何在一行中完成此操作?也许我缺少一个必不可少的R功能?这可以通过sapply来完成我确定,但想知道是否存在非迭代方法。
答案 0 :(得分:3)
c(outer(0:5, x, `+`))
或
rep(x, each = 6) + rep(0:5, 3)
答案 1 :(得分:2)
可能有一些更简单的方法,但这是一种mapply
方法。
> x <- c(17,18,19)
> c(mapply(seq, from = x, to = x + 5))
# [1] 17 18 19 20 21 22 18 19 20 21 22 23 19 20 21 22 23 24
甚至更快
> c(mapply(`:`, from = x, to = x + 5))
mapply
基本上是 multi-apply ,用于将函数应用于多个矢量或列表参数。
以下实际证明比mapply
> c(sapply(x, function(y) `:`(y, y+5)))