2012-02-01 3 views
0

더 많은 명확성을 위해 업데이트 : 나는 내 책과 여러 사이트를 모두 조사 했으므로 간단히 올바른 키워드를 검색하지 않았을 것입니다.거꾸로 된 행렬과 벡터에 함수를 적용하려고 시도

나는 코드에서 볼 수있는 행렬 시간 벡터 (전체 행렬 곱셈)를 곱하는 함수를 만들었습니다. 지금까지 괜찮 았고 일하고 있습니다. I 입력 내 기능 인자 :

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는 달라진다.

그래서 여러 출력을 얻으려면 벡터를 사용하고 싶습니다.

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

나는 그렇게 같은 기능을 적용 시도했다 :

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

하지만 오류가 발생합니다.

오류 : "적용 ((대표 (m, 3)"에서 ','예상치 못한

그래서 제 질문은 행렬 곱셈 한 후 플로팅 벡터의 각 요소에 그 출력을 증식 할 수있는 방법입니다 ?

또한 I 한 응답이 단순히 제 다음 다른 배인 스칼라를 초래하지만, 우리는 그 용액으로서 사용할 수 있다고 가정 할 수 곱셈.

행렬 곱셈을 수행하는 함수를 생성하는 것을 실현 도움을 주셔서 미리 감사드립니다.

+0

당신이 원하는 것은 분명하지 않습니다 : 당신은 "산출물의 벡터"를 원하지만 입력의 어떤 부분이 달라야할까요? 당신의 실수는 단지'c (rep (...')에서 누락 된'c' 일뿐입니다. 그러나 입력의 한 부분 만 다를 경우'sapply'를 사용하고 싶을 수도 있고, 여러 가지가있는 경우'mapply'를 사용하고 싶을 수도 있습니다. –

+0

감사합니다. 일했다. – user1181337

답변

0

당신의 함수는 3 개의 인자를 취합니다.하지만 여러분이 적용 할 때 인자를 넣으면 f로 그냥 넣을 것입니다. 함수에서 하나의 인수 만 있거나 특정 값으로 사전 설정되었지만 함수에 y 및 z 사전 설정이없는 경우이 함수는 (f를 사용하여) 작동합니다.

여기에도이 스 니펫은 없습니다. 당신은 당신이

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

또는

필요 했어 벡터,리스트 등 너무

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

로 저장해야

list(rep(m,3),rep(1,3),rep(2,3)) 
난 정말 당신이 무슨 말을 하려는지 모른다

성취하기를 기대하는 바를 우리에게 보여 주면 도움이 될 것입니다.

관련 문제