gpt4 book ai didi

r - 从矩阵中提取一系列连续向量

转载 作者:行者123 更新时间:2023-12-04 09:27:27 25 4
gpt4 key购买 nike

我有一个很大的矩阵,为了简化起见:

> mat = matrix(c(1:50), ncol = 5)
> mat
[,1] [,2] [,3] [,4] [,5]
[1,] 1 11 21 31 41
[2,] 2 12 22 32 42
[3,] 3 13 23 33 43
[4,] 4 14 24 34 44
[5,] 5 15 25 35 45
[6,] 6 16 26 36 46
[7,] 7 17 27 37 47
[8,] 8 18 28 38 48
[9,] 9 19 29 39 49
[10,] 10 20 30 40 50

我想从每列中连续提取所有可能的由 3 个元素组成的垂直向量,例如(1,2,3), (2,3,4),...,(11,12,13)​​, (12,13,14),... 并生成由以下内容组成的 3×X 矩阵所有这些向量。看起来像这样的东西:

      [,1] [,2] [,3] 
[1,] 1 2 3
[2,] 2 3 4
[3,] 3 4 5
etc. . . .
[5,] 11 12 13
[6,] 12 13 14
[7,] 13 14 15
etc. .. .. ..
[9,] 21 22 23
[10,] 22 23 24

我已经尝试使用 lapply 和 cbind 函数,以及更通用的 for 循环,但它显示“维数不正确”。感谢您的帮助!

最佳答案

我们可以使用 base R

do.call(rbind, lapply(as.data.frame(mat), embed, 3))[,3:1]
# [,1] [,2] [,3]
# [1,] 1 2 3
# [2,] 2 3 4
# [3,] 3 4 5
# [4,] 4 5 6
# [5,] 5 6 7
# [6,] 6 7 8
# [7,] 7 8 9
# [8,] 8 9 10
# [9,] 11 12 13
#[10,] 12 13 14
#[11,] 13 14 15
#[12,] 14 15 16
#[13,] 15 16 17
#[14,] 16 17 18
#[15,] 17 18 19
#[16,] 18 19 20
#[17,] 21 22 23
#[18,] 22 23 24
#[19,] 23 24 25
#[20,] 24 25 26
#[21,] 25 26 27
#[22,] 26 27 28
#[23,] 27 28 29
#[24,] 28 29 30
#[25,] 31 32 33
#[26,] 32 33 34
#[27,] 33 34 35
#[28,] 34 35 36
#[29,] 35 36 37
#[30,] 36 37 38
#[31,] 37 38 39
#[32,] 38 39 40
#[33,] 41 42 43
#[34,] 42 43 44
#[35,] 43 44 45
#[36,] 44 45 46
#[37,] 45 46 47
#[38,] 46 47 48
#[39,] 47 48 49
#[40,] 48 49 50

关于r - 从矩阵中提取一系列连续向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45256278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com