在一行矩阵上应用应用后如何保留矩阵维度

sca*_*der 1 r matrix

我有以下矩阵:

> m <- matrix(0, nrow=1, ncol = 3)
> m
     [,1] [,2] [,3]
[1,]    0    0    0
> dim(m)
[1] 1 3
Run Code Online (Sandbox Code Playgroud)

然后我对其应用一个函数,如下所示:

> apply(m, 2, function(x) {
+     10 * (2**x - 1)
+ })
[1] 0 0
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,输出变成了一个向量(即dim = NULL)。使用后如何保留尺寸apply

Ron*_*hah 5

用于[]保留尺寸

m[] <- apply(m, 2, function(x) 10 * (2**x - 1))
m
#     [,1] [,2] [,3]
#[1,]    0    0    0
Run Code Online (Sandbox Code Playgroud)

然而,R 是矢量化的,这样的数学运算可以直接完成,不需要apply任何循环。

10 * (2**m - 1)
Run Code Online (Sandbox Code Playgroud)