2013-11-16 9 views
0

Я использую lapply функцию в следующем виде:lapply на несколько аргументов в функции

y=rnorm(10) 
x1=c(1,1,1,2,2,2,3,3,3,4) 
x2=c(5,5,6,6,7,7,8,8,9,9) 
x3=c(7,7,8,8,9,9,10,10,11,11) 

t1 <- outer(x1, unique(x1), '<=') 
t2 <- outer(x2, unique(x2), '<=') 
t3 <- outer(x3, unique(x3), '<=') 
lapply(seq_along(unique(x1)), function(idx) t(y*t1[,idx]*t2) %*% t3) 

Так как я новичок в R, у меня возникли проблемы, обобщать выше lapply звоните, чтобы добавить еще одну переменную, то есть теперь lapply будет вызывать функцию из 2 аргументов. Это то, что я пытался сделать:

x4=c(7,6,6,5,9,5,10,1,1,2) 
t4 <- outer(x4, unique(x4), '<=') 
lapply(list(idx1=seq_along(unique(x1)),idx4=seq_along(unique(x4))), 
     function(idx1,idx4) t(y*t1[,idx1]*t2) %*% t3*t4[,idx4]) 

Идея здесь заключается в следующем: я фиксирую idx1, а затем использовать lapply функцию для каждого idx4. Тогда, для следующего idx1, то же самое. Я должен быть чем-то вроде вложенного лапши.

До сих пор я не смог придумать правильный способ сделать это. Кто-нибудь даст какой-нибудь совет?

PS: Этот вопрос связан с вопросом, который я ранее задавал, но моя проблема заключается в том, что я не могу обобщить предыдущий ответ на 4 измерения, учитывая, что он является структурами, структура скрепления не является одна и та же. Отныне я теперь прошу совета о том, как сделать это обобщение. Спасибо

ответ

0

Я думаю, что у меня есть способ решить эту проблему, вложенные две функции lapply.

lapply(seq_along(unique(x)), function(idx){lapply(seq_along(unique(r)), 
               function(idr) t(y*t1[,idx]*t2)%*%(t3 
               *t4[,idr]))}) 

Это решительно решит мою проблему. Если у кого-то есть более чистое решение, отправьте его.

 Смежные вопросы

  • Нет связанных вопросов^_^