我在返回列表的函数上运行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}}不同)。你会建议什么?我唯一的要求就是保留至少两个维度用于索引目的。
答案 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))))