R等效于matlab中的ind2sub/sub2ind

dji*_*iao 14 matlab r

Matlab有两个有用的函数,用于将矩阵下标转换为线性索引,反之亦然.(ind2sub和sub2ind)

R中有相同的方法吗?

JD *_*ong 19

这不是我以前用过,但根据这个方便的花花公子Matlab的与R小抄,你可以尝试这样的事情,在这里m是矩阵的行数,r并且c有行和列数分别和ind线性指数:

MATLAB:

[r,c] = ind2sub(size(A), ind)
Run Code Online (Sandbox Code Playgroud)

R:

r = ((ind-1) %% m) + 1
c = floor((ind-1) / m) + 1
Run Code Online (Sandbox Code Playgroud)

MATLAB:

ind = sub2ind(size(A), r, c)
Run Code Online (Sandbox Code Playgroud)

R:

ind = (c-1)*m + r
Run Code Online (Sandbox Code Playgroud)


aar*_*njg 8

对于更高维度的数组,有arrayInd功能.

> abc <- array(dim=c(10,5,5))
> arrayInd(12,dim(abc))
     dim1 dim2 dim3
[1,]    2    2    1
Run Code Online (Sandbox Code Playgroud)


ggl*_*gll 5

您通常不需要R中的这些功能。在Matlab中,您需要这些功能是因为您不能执行例如

A(i,j)= x

其中i,j,x是行和列索引的三个向量,x包含相应的值。(另请参阅此问题

在R中,您可以简单地:

A [cbind(i,j)] <-x