使用outer生成一个列表数组

时间:2015-04-02 09:55:48

标签: arrays r list

我在返回列表的函数上运行outer,我希望它返回一个列表数组,因为文档说明了这一点:

  

数组X和Y的外积是具有维度的数组A.   c(dim(X),dim(Y))其中元素A [c(arrayindex.x,arrayindex.y)] =   FUN(X [arrayindex.x],Y [arrayindex.y],...)。

但是,以下代码会引发错误:

outer(1:5, 1:5, Vectorize(function(x, y) list(x=x, y=y)))
#Error in outer(1:5, 1:5, Vectorize(function(x, y) list(x = x, y = y))) : 
#  dims [product 25] do not match the length of object [50]

似乎outer试图压扁我的列表,而我希望它们完好无损。似乎没有控制此参数的参数(与simplify的{​​{1}}不同)。你会建议什么?我唯一的要求就是保留至少两个维度用于索引目的。

1 个答案:

答案 0 :(得分:2)

你可以尝试

outer(1:5, 1:5, Vectorize(function(x,y) list(c(x=x, y=y))))

输出25个元素的列表,每个元素都是一个命名向量

或另一种选择是将其包含在一个'列表中。创建列表列表。

outer(1:5, 1:5, Vectorize(function(x,y) list(list(x=x, y=y))))