试图将函数应用于倒置矩阵和向量

问题描述:

更新尝试的更多清晰度: 我确实调查了我的书籍和许多网站,我确信我根本没有搜索正确的关键词。试图将函数应用于倒置矩阵和向量

我创建了一个将矩阵乘以向量(全矩阵乘法)的函数,您将在代码中看到该向量。到目前为止,这很好,工作。我输入我的功能和它的参数:

m<- matrix(1:9, nrow= 3, ncol=3) 
f <- function(x,y,z) {(as.vector(y)%*%x%*%as.vector(y))*z} 
f(m,rep(1,3),2) 

此输出: [1] [1,] 90

x和y保持不变,但Ž会有所不同。

所以我想用一个向量来获得多个输出。

z<- as.vector(1,2,3) 

我已经试过像这样的应用功能:

apply (c(rep(m,3),rep(1,3),rep(2,3)),1,f) 

但是,这会产生一个错误。

错误:意外“”‘应用((REP(男,3),’

所以我的问题是你怎么做矩阵乘法,然后乘上输出到每个元素的矢量绘图?

我也认识到,一个答案是简单的,然后再创建一个执行矩阵乘法函数另一种导致次标量,但我们可以假设,不能作为解决乘法。

在此先感谢您的帮助

+0

你想要什么还不清楚:你想要一个“输出向量”,但输入的哪一部分应该改变?你的错误只是'c'在'c(rep(...',但你可能想要使用'sapply'如果只有一部分输入变化,或者'mapply'如果几个变化的话 – 2012-02-01 06:05:21

+0

谢谢,mappply工作。 – user1181337 2012-02-01 19:26:12

你的函数需要3个参数,但是当你把它应用到应用中时,你只需要把它放在f中。如果你只在函数中有一个参数,或者它们被预置为一个特定的值,但你的函数没有y和z预设,这个(只用f)就可以工作。

这个snipet在这里不是什么。你需要把它存储为载体,列表等

(rep(m,3),rep(1,3),rep(2,3)) 

所以你需要

c(rep(m,3),rep(1,3),rep(2,3)) 

list(rep(m,3),rep(1,3),rep(2,3)) 

我真的不知道你在想什么做到这一点,所以给我们一个你期望得到结果的例子可能会有所帮助。