Это решение почти то, что мне нужно, но не работает в моем случае. Вот что я пробовал:
comb_apply <- function(f,...){
exp <- expand.grid(...,stringsAsFactors = FALSE)
apply(exp,1,function(x) do.call(f,x))
}
#--- Testing Code
l1 <- list("val1","val2")
l2 <- list(2,3)
testFunc<-function(x,y){
list(x,y)
}
#--- Executing Test Code
comb_apply(testFunc,l1,l2)
comb_apply(paste,l1,l2)
Это работает для примера paste
, но я получаю сообщение: Error in (function (x, y) : unused arguments (Var1 = "val1", Var2 = 2)
, когда я пробую свой testFunc
.
Я ожидаю получить в результате:
list(list("val1",2),list("val1",3),list("val2",2),list("val2",3))
Мотивация
Я пришел из Mathematica, на котором выполнить эту операцию так же просто, как:
l1 = {"val1", "val2"}
l2 = {2, 3}
testFunc = {#1, #2} &
Outer[testFunc, l1, l2]
Как я могу сделать это в R
?
R
имеет функцию?outer
. - person sgibb   schedule 06.06.2015