【发布时间】:2017-04-07 21:49:30
【问题描述】:
我有两个向量,a 和 b,这两个向量的长度不同。我希望对 a 和 b 中条目的所有可能组合评估函数 f。一个可能的解决方案是:
outer(a,b,f)。
但是,外部函数只返回二维数组,函数 f 返回一个列表。我想知道是否有类似于outer的函数可以返回一个列表。
我检查了包 plyr/dplyr 并没有找到类似的功能。我知道这个问题可以通过 for 循环、嵌套 lapply 或首先将参数 a 和 b “外部”放入一个数组然后使用 apply 来解决。我想知道是否有优雅的方法来解决这个问题。
【问题讨论】:
-
combn有一个参数可以将函数应用于组合。但这太宽泛了。我们需要一些细节。 -
outer应该能够返回一个包含列表条目的矩阵。我的猜测是您的f函数未矢量化。?Vectorize -
同意需要代码的亲密选民。我们已经等待了足够长的时间来响应该请求。查看 SO 帮助页面:minimal reproducible example
-
这里的代码证明关于外部不处理列表的说法是错误的:
x = 1:3; y = 6:7; f <- function(a,b) { lapply(a, function(a) list(a,b) )}; outer(x,y,f)