是否有一种聪明的方法可以使用或许使用lapply()
其他更多可推断的程序来生成R中的下一个列表?
ones = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) twos = c(1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1) threes = c(1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0) fours = c(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0) fives = c(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) l = list(ones, twos, threes, fours) [[1]] [1] 1 1 1 1 1 1 1 1 1 1 1 [[2]] [1] 1 0 1 0 1 0 1 0 1 0 1 [[3]] [1] 1 0 0 1 0 0 1 0 0 1 0 [[4]] [1] 1 0 0 0 1 0 0 0 1 0 0
这些对应于生成分区函数的多项式系数.
第一个列表是for ones
,因此计数一次是1
整数; 因此向量1,1,1,1,1,1,1,...
在条目中[[2]]
我们有twos
,并且我们2
从开始计数0
,跳过1
(编码为0
).在[[3]]
我们通过计算3
零,三,六,九等:的
基础R中相当简单的方法是
lapply(seq(0L, 5L), function(i) rep(c(1L, integer(i)), length.out=11L)) [[1]] [1] 1 1 1 1 1 1 1 1 1 1 1 [[2]] [1] 1 0 1 0 1 0 1 0 1 0 1 [[3]] [1] 1 0 0 1 0 0 1 0 0 1 0 [[4]] [1] 1 0 0 0 1 0 0 0 1 0 0 [[5]] [1] 1 0 0 0 0 1 0 0 0 0 1
seq(0L, 5L)
产生向量0到5,等价seq_len(5L)-1L
,这对于创建大向量更快.
c(1L, integer(i))
产生0-1向量的内部重复部分,rep
使用length.out参数根据所需长度(此处为11)重复.
lapply
并且function(i)
当我们遍历向量时允许0的数量增加.