如何解决如何将矩阵索引代码从 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 举报,一经查实,本站将立刻删除。