Вы ищете outer
.
outer(1:3, 4:6, FUN=`^`)
# [,1] [,2] [,3]
# [1,] 1 1 1
# [2,] 16 32 64
# [3,] 81 243 729
Чтобы получить векторный формат, используйте
as.vector(outer(1:3, 4:6, FUN=`^`))
# [1] 1 16 81 1 32 243 1 64 729
mapply
, в основном выбрасывает только диагональ.
mapply(FUN=`^`, 1:3, 4:6)
# [1] 1 32 729
Редактировать
Для большего количества аргументов вы можете попробовать expand.grid
.
f <- function(x, y, z) x + y - z
Просто разверните ваши аргументы для всех возможных комбинаций перестановок.
args <- expand.grid(
x1=1:3,
x2=4:6,
xn=7:9)
head(args)
# x1 x2 xn
# 1 1 4 7
# 2 2 4 7
# 3 3 4 7
# 4 1 5 7
# 5 2 5 7
# 6 3 5 7
И распакуйте их в .GlobalEnv
.
list2env(args, envir=.GlobalEnv)
Тогда вы можете использовать mapply
.
mapply(f, x1, x2, xn)
# [1] -2 -1 0 -1 0 1 0 1 2 -3 -2 -1 -2 -1 0 -1 0 1 -4 -3
# [21] -2 -3 -2 -1 -2 -1 0