【发布时间】:2021-09-20 01:48:12
【问题描述】:
我有一个元素列表,我想对每个元素应用一个函数(例如,mean)。
例如:
对于第一组,我想得到1和1中的mean,然后是1和'2','1'和'3'。
然后是2 和1,然后是2 和“2”,最后是“2”和“3”。
最后是3 和1,然后是3 和“2”,最后是“3”和“3”
对于第二组,我想获得4和4的mean,然后是4和5,4和6
然后是5 和4,然后是5 和5、5 和6。
最后是6 和4,然后是6 和5、6 和6。
我希望最终输出是两个矩阵的列表,其中每个矩阵代表来自l1 的三个元素的集合。我怎样才能得到这个输出?
l1 <- list(1,2,3,4,5,6)
l2 <- list(7,8,9,10,11,12)
Map(
function(x, y) outer(unlist(x), unlist(y), `+`) / 2,
split(l1, ceiling(seq_along(l1) / 3)),
split(l2, ceiling(seq_along(l2) / 3))
)
与代码的输出类似,但只有一个列表,而不是两个。
【问题讨论】:
-
我使用的示例数据在对象
l1中。这就是您所说的输入数据吗? -
你需要
apply(expand.grid(l1, l1), 1, function(x) mean(unlist(x)))