我如何将矩阵第 i 列中的所有元素提高到 i 的次方?
How might I raise all elements in the ith column of a matrix to the power of i?
我目前正在尝试根据对 m 个时间段的 n 个利率的选择来创建一个 nxm 的累积因子矩阵。因此,例如,第一行给出了单个单位在利率 r1 下积累的演变,第二行给出了利率 r2 下的演变,依此类推。这应该给我一个看起来像
的矩阵
1+r1 (1+r1)^2 (1+r1)^3 ...
1+r2 (1+r2)^2 (1+r2)^3 ...
1+r3 (1+r3)^2 (1+r3)^3 ...
.
.
.
为此,我创建了一个形式为
的矩阵
1+r1 1+r1 1+r1 ...
1+r2 1+r2 1+r2 ...
1+r3 1+r3 1+r3 ...
.
.
.
(具有常量行)并希望将第 i 行中的每个元素提升到 i 的幂(不使用循环)。如何做到这一点?
一个选项是遍历列序列,提取矩阵列并将其提升为索引的幂
sapply(seq_len(ncol(m1)), function(i) (1 + m1[,i])^i)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 2 49 1728 83521 5153632
#[2,] 3 64 2197 104976 6436343
#[3,] 4 81 2744 130321 7962624
#[4,] 5 100 3375 160000 9765625
#[5,] 6 121 4096 194481 11881376
或者不使用循环,使用 col
索引,它将 return 与原始矩阵相同的维度,然后对相同维度的矩阵进行幂运算
(m1 + 1)^col(m1)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 2 49 1728 83521 5153632
#[2,] 3 64 2197 104976 6436343
#[3,] 4 81 2744 130321 7962624
#[4,] 5 100 3375 160000 9765625
#[5,] 6 121 4096 194481 11881376
或者另一个选项是 rep
(m1 + 1)^(rep(seq_len(ncol(m1)), each = nrow(m1)))
数据
m1 <- matrix(1:25, 5, 5)
我目前正在尝试根据对 m 个时间段的 n 个利率的选择来创建一个 nxm 的累积因子矩阵。因此,例如,第一行给出了单个单位在利率 r1 下积累的演变,第二行给出了利率 r2 下的演变,依此类推。这应该给我一个看起来像
的矩阵1+r1 (1+r1)^2 (1+r1)^3 ...
1+r2 (1+r2)^2 (1+r2)^3 ...
1+r3 (1+r3)^2 (1+r3)^3 ...
.
.
.
为此,我创建了一个形式为
的矩阵1+r1 1+r1 1+r1 ...
1+r2 1+r2 1+r2 ...
1+r3 1+r3 1+r3 ...
.
.
.
(具有常量行)并希望将第 i 行中的每个元素提升到 i 的幂(不使用循环)。如何做到这一点?
一个选项是遍历列序列,提取矩阵列并将其提升为索引的幂
sapply(seq_len(ncol(m1)), function(i) (1 + m1[,i])^i)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 2 49 1728 83521 5153632
#[2,] 3 64 2197 104976 6436343
#[3,] 4 81 2744 130321 7962624
#[4,] 5 100 3375 160000 9765625
#[5,] 6 121 4096 194481 11881376
或者不使用循环,使用 col
索引,它将 return 与原始矩阵相同的维度,然后对相同维度的矩阵进行幂运算
(m1 + 1)^col(m1)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 2 49 1728 83521 5153632
#[2,] 3 64 2197 104976 6436343
#[3,] 4 81 2744 130321 7962624
#[4,] 5 100 3375 160000 9765625
#[5,] 6 121 4096 194481 11881376
或者另一个选项是 rep
(m1 + 1)^(rep(seq_len(ncol(m1)), each = nrow(m1)))
数据
m1 <- matrix(1:25, 5, 5)