R 创建迭代序列列表的一行程序?

R 创建迭代序列列表的一行程序?,r,list,iteration,lapply,replicate,R,List,Iteration,Lapply,Replicate,我需要创建一个序列列表,它总是回到序列中的第一位。我已经写了下面的代码,但是看起来很笨拙。是否有一种使用更少字符的解决方案 (i=seq(1,24,by=3)) #> [1] 1 4 7 10 13 16 19 22 (i_list=purrr::map(i,~c(.:+2),) #> [[1]] #> [1] 1 2 3 1 #> #> [[2]] #> ... 编辑:这里有一种使用lappy()的方法。不知道为什么会有人投反对票,欢迎提供任何关于如何改进问题的建议 (i_lis

我需要创建一个序列列表,它总是回到序列中的第一位。我已经写了下面的代码,但是看起来很笨拙。是否有一种使用更少字符的解决方案


(i=seq(1,24,by=3))
#> [1]  1  4  7 10 13 16 19 22
(i_list=purrr::map(i,~c(.:+2),)
#> [[1]]
#> [1] 1 2 3 1
#> 
#> [[2]]
#> ...
编辑:这里有一种使用
lappy()
的方法。不知道为什么会有人投反对票,欢迎提供任何关于如何改进问题的建议

(i_list=lappy(i,函数(x)c(x:(x+2),x)))

我想知道是否有办法使用
replicate()

cbind(矩阵(1:24,ncol=3,byrow=TRUE),seq(1,24,by=3))

然后迭代矩阵中的行,而不是列表中的元素

或者,如果你喜欢代码高尔夫:

> seq(1,24,by=3) + t(matrix(c(0,1,2,0),ncol=8,nrow=4))
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    1
[2,]    4    5    6    4
[3,]    7    8    9    7
[4,]   10   11   12   10
...
但是,在这种情况下,您在构建
+
的RHS方面投入了多少工作?你的问题是如何参数化的


这取决于具有规则模式的
i
(对步长进行一些调整),它不适用于任意
i
序列。

在矩阵中,而不是列表形式,有:

cbind(矩阵(1:24,ncol=3,byrow=TRUE),seq(1,24,by=3))

然后迭代矩阵中的行,而不是列表中的元素

或者,如果你喜欢代码高尔夫:

> seq(1,24,by=3) + t(matrix(c(0,1,2,0),ncol=8,nrow=4))
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    1
[2,]    4    5    6    4
[3,]    7    8    9    7
[4,]   10   11   12   10
...
但是,在这种情况下,您在构建
+
的RHS方面投入了多少工作?你的问题是如何参数化的


这取决于
i
具有规则的模式(对步长进行了一些调整),它不适用于任意
i
序列。

您的代码适合一行,长度为42个字符。这有多笨重?我想知道是否有一行。你的代码可以放在一行,有42个字符。那有多笨重?我想知道有没有1号班轮。