如何解决将 (x1+x2)*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 举报,一经查实,本站将立刻删除。