我正在把一段代码从Matlab翻译成R语言。在Matlab中,其中一个代码行是
C=A*B
其中,B是矩阵,并且A是矩阵或标量(例如,A=1),这取决于某些条件。这很好地工作,因为矩阵 * 矩阵或标量 * 矩阵在Matlab中以相同的方式编写(直到矩阵乘法的适当维度,这就是情况)。
然而,在R中,事情变得有点复杂。这成为
C=A %*% B
这很好用除非A是标量。的确,只是写作
产出
不一致变元
而在Matlab中,甚至不存在这样的问题。
有没有一种方法可以将我的Matlab指令C=A*B
翻译成R,同时仍然保持我所需要的灵活性,如上所述?
注意,将A设置为单位矩阵将不满足:有时A是一个标量,不能转化为矩阵。我真的需要上面描述的“原始”灵活性
3条答案
按热度按时间iyr7buue1#
您可以创建自己的中缀运算符来处理此问题。
tryCatch
是一种处理错误的方法。如果%*%
返回错误,则函数将执行x * y
:测试:
voj3qocg2#
对于您的具体要求,可以试试
等着瞧吧
zy1mlcev3#
在一个ifelse