我想要一个f
这样的功能
(outer(X, Y, f))[i, j]
是 X 的第 i 个元素和 Y 的第 j 个元素的并排串联,类似于c(X[i], Y[j])
或具有类似结构。
此外,我希望这个结果能够重复该过程,并且通过这种方式我们得到
(outer(outer(X, Y, f), Z, f))[i, j, k]
是 X 的第 i 个元素、Y 的第 j 个元素和 Z 的第 k 个元素的并排串联,即相等的或具有类似于的结构的结构c(X[i], Y[j], Z[k])
。
最终,我的目标是定义这样的函数:
foo <- function(a.list) {
Reduce(function(x, y) outer(x, y, f), a.list)
}
这样,如果
A <- foo(list(v_1, ..., v_p))
那么dim(A)
将是c(length(v_1), ..., length(v_p))
和
A[i_1, ..., i_p] == c(v_1[i_1], ..., v_p[i_p])
对于所有有效的索引集(i_1,...,i_p)。
例如:
> foo(list(LETTERS[1:2], c(3, 4, 5), letters[6:7]))
, , 1
[,1] [,2] [,3]
[1,] c("A", 3, "f") c("A", 4, "f") c("A", 5, "f")
[2,] c("B", 3, "f") c("B", 4, "f") c("B", 5, "f")
, , 2
[,1] [,2] [,3]
[1,] c("A", 3, "g") c("A", 4, "g") c("A", 5, "g")
[2,] c("B", 3, "g") c("B", 4, "g") c("B", 5, "g")
(注意:我不知道像上面示例中显示的结果这样的向量数组在 R 中是否有效/可能,但我使用的表达方式是c("A", 3, "f")
建议“一些元素为“A”的类似向量的对象, 3,和“f”'。)
我可以用什么 f 来实现这一点?
谢谢!