微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将矩阵索引代码从 MATLAB 转换为 R

如何解决如何将矩阵索引代码从 MATLAB 转换为 R

我的 MATLAB 代码中有一个名为 h1 的一维矩阵和一个名为 nv 的 3 维矩阵。然后我运行代码 h1(nv) 来创建一个新的 3 列矩阵 hc。我需要将此代码转换为 R。我不知道如何在 R 中进行这种矩阵索引。我以为您使用括号进行矩阵索引,所以我尝试只执行 h1[nv] 但这给了我一个一维数组而不是像我的 MATLAB 输出那样的 3 列,所以它肯定不会做同样的事情。

解决方法

令人沮丧的是(个人意见),如果索引将其任何维度减少到长度为 1,R 的数组会在索引时删除一个维度。

例如:

m <- matrix(1:6,nrow=2)
m[1,]
# [1] 1 3 5
m[,2]
# [1] 3 4

当查看 3 维数组时,可以更清楚地看到这一点(也许):

ary <- array(1:24,dim=c(3,4,2))
ary
#,1
#      [,1] [,2] [,3] [,4]
# [1,]    1    4    7   10
# [2,]    2    5    8   11
# [3,]    3    6    9   12
#,2
#      [,]   13   16   19   22
# [2,]   14   17   20   23
# [3,]   15   18   21   24

ary[1,]
#      [,2]
# [1,]    1   13
# [2,]    4   16
# [3,]    7   19
# [4,]   10   22
ary[,2,]    4   16
# [2,]    5   17
# [3,]    6   18

这可以通过在 ,drop=FALSE 索引括号内添加 [ 来避免:

m[1,drop=FALSE]
#      [,3]
# [1,]    1    3    5
m[,1]
# [1,]    3
# [2,]    4
ary[1,drop=FALSE]
#,]    1    4    7   10
#,]   13   16   19   22

(请注意,您必须包括任何中间未使用的逗号,如 n ary[1,drop=FALSE]drop= 参数必须始终位于第 (n+1) 个位置,其中数组有 n 维。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。