我有以下矩阵:
> 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?
用于[]保留尺寸
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)