2014-01-22 2 views
0

안녕하세요 저는 이퀄라이저를 호출하는 행렬에 적용을 사용하려고합니다. 내가하고 싶은 것은 여러 인자로 만든 함수를 보내는 것입니다. 나는이 작업을 수행 할 때 현재 작동 : 그러나apply 함수를 사용하여 여러 개의 인수를 보내십시오.

apply(eq, 1, manydo2) 

manydo2 <-function(x){ # do something with the vector x } 

내가 실패이

apply(list("x1"=eq, "r1" = 18), 1, manydo2) 

뭔가를하려고 할 때, 나는 다른 변수뿐만 아니라 행 데이터를 전달할 수 있습니다 어쨌든 거기가에서 R1 말 이 경우? 여러 번 감사드립니다.

+1

여기서 무엇을하려고합니까? 행렬의 부분 집합을 원하십니까? 아니면 다른 인수를 eq에 전달 하시겠습니까? –

+0

배열, 행렬 또는 데이터 프레임과 함께'apply'를 사용하십시오. 'lapply (list ("x1"= eq, "r1"= 18), manydo2)'와 같이 목록에'lapply'를 사용하십시오. – lukeA

+0

@JohnPaul 추상화에 대해 유감스럽게 생각합니다. 나는 함수의 manydo2에 eq의 부분 집합을 전달하려고 시도하지만 여러 개의 인수가있다. – Ahdee

답변

3

당신이 행, 각 행에 대해 동일한 하나의 인자를 전달하려는 가정 : 각 행의 두 번째 인수에 대해 서로 다른 값을 원하는 경우

manydo3 <- function(x, r1) NULL 
apply(eq, 1, manydo3, r1=18) 

, 당신은 당신을 분할 할 mapply와 행과 패스 행 모두와 다른 인수로 매트릭스 : length(R) == nrow(eq) (즉, R은 R1, R2 등 포함)

mapply(manydo3, split(eq, row(eq)), R) 

.

+1

이것 또한 플러스하면'apply (eq [eq $ colx == x1,], 1, manydo, r1 = 18)'와 같이'eq'를 부분 집합 할 수 있습니다. '? apply'를 보면'...'인자가 있다는 것을 알 수 있습니다. 다른 인자를 추가 할 수 있고'apply'에서 호출 한 함수로 보내질 것입니다. –

+0

안녕하세요, BrodieG와 John, 네, 완벽하게 작동합니다. 나는'apply (eq [1 : 5,1 : 17], 1, manydo2, r1 = 18)와 같은 것을 사용하여 끝났다. – Ahdee

관련 문제