为列表创建特定数量的透视

时间:2017-11-12 04:41:11

标签: r

我需要创建一个" N"长度为" L"从数字开始" B" 。如果我指定N = 3,则L = 4且B = 5。我需要一个以下三个向量的列表。

5 ,6,7,8,
9,10,11,12
13,14,15,16

我可以一个接一个地手动完成,但我有时会创建20或30个矢量来创建不同的长度。 如果有人能帮我一把,我将不胜感激。

干杯 卡洛斯

2 个答案:

答案 0 :(得分:2)

如果您对matrix作为输出感到满意......

N <- 3
L <- 4
B <- 5

x <- seq(from = B, to = B + N * L - 1)

y <- matrix(x, nrow = N, byrow = TRUE)

y    
#      [,1] [,2] [,3] [,4]
# [1,]    5    6    7    8
# [2,]    9   10   11   12
# [3,]   13   14   15   16

通过转置和data.frame来列出矩阵......

as.list(as.data.frame(t(y)))
# $V1
# [1] 5 6 7 8
# 
# $V2
# [1]  9 10 11 12
# 
# $V3
# [1] 13 14 15 16

我以这种方式展示它,部分原因是因为我从来没有喜欢过数字强制进行冒号,当然还有其他方法可以解决这个问题。如果您设置y <- matrix(x, nrow = L),则可能会移除转置。并删除as.list,因为从技术上讲,data.frame是一个列表。

as.data.frame(y)
#   V1 V2 V3
# 1  5  9 13
# 2  6 10 14
# 3  7 11 15
# 4  8 12 16

答案 1 :(得分:1)

您可以使用split()获取列表输出。

split(seq(B, B + L*N - 1), (1:(L*N)-1) %/% N)