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

将 (x1+x2)*y 转换为矩阵,或从不同长度的向量调用函数参数

如何解决将 (x1+x2)*y 转换为矩阵,或从不同长度的向量调用函数参数

我想创建一个矩阵,它在函数中结合了 x 参数和 y 参数:

x1<-c(2,4,6)
x2<-c(1,2,3)
y<-c(0,1,10,100,1000)

f1<-function(x1,x2,y) {
  return((x1+x2)*y)
}

结果应该是:

[,1] [,2] [,3] [,4] [,5]
r1    0    3   30  300 3000
r2    0    6   60  600 6000
r3    0    9   90  900 9000

(行和列的命名并不重要)。这可能是最基本的事情之一,但我仍然碰壁,无法通过谷歌搜索答案。

解决方法

查找您的矩阵规则。

as.matrix(x1+x2)%*%t(as.matrix(y))
,

只需循环 y 并进行计算

sapply(y,function(u)  (x1 + x2) * u)

或者使用OP的功能

sapply(y,f1,x1 = x1,x2 = x2)
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    3   30  300 3000
[2,]    0    6   60  600 6000
[3,]    0    9   90  900 9000
,

我们可以像下面这样使用outer

> outer(x1 + x2,y)
     [,]    0    9   90  900 9000

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