【问题标题】:Adding elements to a column in a matrix将元素添加到矩阵中的列
【发布时间】:2014-10-14 12:43:28
【问题描述】:

我想知道如何通过列将元素附加到矩阵。我的意思是,如果我有一个矩阵:

A=

a
b
c
d

我想在矩阵A的底部添加一个元素e。这样我就有了

a
b
c
d
e 

其中 a,b,... 也可以是向量。

我正在尝试在 for - 循环中实现这一点。

谢谢。

【问题讨论】:

  • 如果您从一开始就知道矩阵中的行数/列数,那么首先创建一个空矩阵并在循环中选择并填充特定行应该更快。也许,您可以发布更多关于您正在尝试做的事情的详细信息,因为您很有可能避免一些瓶颈

标签: r matrix append


【解决方案1】:

您可以使用rbind

A <- rbind(A, e).

如果您的矩阵很大,它可能会在循环中变慢。如果事先知道大小,最好预先分配矩阵,然后分配行A[i,] &lt;- e,例如。

【讨论】:

  • 如果我尝试这样做:A[i,]
  • 尺寸必须匹配,请在您的问题中添加一个说明错误的示例。
  • 感谢您到目前为止的帮助,安德烈。我希望我能给你投票。我现在拥有的是一个 N 乘 M 矩阵(我们称之为 A)。我想从这个矩阵A中取出每一列,剪掉最后两行,然后用它来制作矩阵A中所有元素的列向量(我们称之为B)。因此,第一个元素(行) B 将是 A 的第一列(减去最后两行),B 的第二行将具有 A 的第二列。所以我们基本上会有一个非常长的列向量。因此,B 的尺寸将是 N*M 乘 1。谢谢
  • 所以你把A的最后一行去掉,然后把所有的列连接起来,向量B的长度不就是(N-2)*M吗?
  • 其实我只是想通了。我通过删除最后两行 A
【解决方案2】:

您可以将矩阵转换为数据框。然后,您可以轻松添加其他行。如果需要,您可以将其转换回矩阵:

mm
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
 [1,]    0    0    0    0    0    0    0    0    0     0     0
 [2,]    0    1    2    3    4    5    6    7    8     9    10
 [3,]    0    2    4    6    8   10   12   14   16    18    20
 [4,]    0    3    6    9   12   15   18   21   24    27    30
 [5,]    0    4    8   12   16   20   24   28   32    36    40
 [6,]    0    5   10   15   20   25   30   35   40    45    50
 [7,]    0    6   12   18   24   30   36   42   48    54    60
 [8,]    0    7   14   21   28   35   42   49   56    63    70
 [9,]    0    8   16   24   32   40   48   56   64    72    80
[10,]    0    9   18   27   36   45   54   63   72    81    90
[11,]    0   10   20   30   40   50   60   70   80    90   100
> dd = data.frame(mm)
> dd
   X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11
1   0  0  0  0  0  0  0  0  0   0   0
2   0  1  2  3  4  5  6  7  8   9  10
3   0  2  4  6  8 10 12 14 16  18  20
4   0  3  6  9 12 15 18 21 24  27  30
5   0  4  8 12 16 20 24 28 32  36  40
6   0  5 10 15 20 25 30 35 40  45  50
7   0  6 12 18 24 30 36 42 48  54  60
8   0  7 14 21 28 35 42 49 56  63  70
9   0  8 16 24 32 40 48 56 64  72  80
10  0  9 18 27 36 45 54 63 72  81  90
11  0 10 20 30 40 50 60 70 80  90 100
> dd[12,]=c(1,2,3,4,5,6,7,8,9,8,9)
> dd
   X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11
1   0  0  0  0  0  0  0  0  0   0   0
2   0  1  2  3  4  5  6  7  8   9  10
3   0  2  4  6  8 10 12 14 16  18  20
4   0  3  6  9 12 15 18 21 24  27  30
5   0  4  8 12 16 20 24 28 32  36  40
6   0  5 10 15 20 25 30 35 40  45  50
7   0  6 12 18 24 30 36 42 48  54  60
8   0  7 14 21 28 35 42 49 56  63  70
9   0  8 16 24 32 40 48 56 64  72  80
10  0  9 18 27 36 45 54 63 72  81  90
11  0 10 20 30 40 50 60 70 80  90 100
12  1  2  3  4  5  6  7  8  9   8   9
> as.matrix(dd)
   X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11
1   0  0  0  0  0  0  0  0  0   0   0
2   0  1  2  3  4  5  6  7  8   9  10
3   0  2  4  6  8 10 12 14 16  18  20
4   0  3  6  9 12 15 18 21 24  27  30
5   0  4  8 12 16 20 24 28 32  36  40
6   0  5 10 15 20 25 30 35 40  45  50
7   0  6 12 18 24 30 36 42 48  54  60
8   0  7 14 21 28 35 42 49 56  63  70
9   0  8 16 24 32 40 48 56 64  72  80
10  0  9 18 27 36 45 54 63 72  81  90
11  0 10 20 30 40 50 60 70 80  90 100
12  1  2  3  4  5  6  7  8  9   8   9
> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-19
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    相关资源
    最近更新 更多