减去 R 中列表的所有唯一元素对

问题描述 投票:0回答:1

在下面的

My_list
中,我想减去所有唯一的元素对(不重复)

在这个例子中,因为

My_list
中有3个元素,因此,我们期望
choose(3, 2)
=三对相减。

是否可以在 R 中实现如下所示的

Desired_output

My_list = 
  list("(    beginner_post1 - beginner_baseline    )"= c(5,-2),
       "(intermediate_post1 - intermediate_baseline)"= c(6,-3),
       "(    advanced_post1 - advanced_baseline    )"= c(4,-1))


Desired_output = 
  list("(beginner_post1 - beginner_baseline) - (    advanced_post1 - advanced_baseline    )"= c(5,-2,-4,1),
       "(beginner_post1 - beginner_baseline) - (intermediate_post1 - intermediate_baseline)"= c(5,-2,-6,3),
       "(advanced_post1 - advanced_baseline) - (intermediate_post1 - intermediate_baseline)"= c(4,-1,-6,3)
  )
r list function loops tidyverse
1个回答
0
投票

也许可以这样使用

combn(.., FUN=)

do.call(c, combn(3, 2, FUN = function(i) setNames(list(unlist(My_list[i], use.names=FALSE)), paste(names(My_list)[i], collapse = " - ")), simplify = FALSE))
# $`(    beginner_post1 - beginner_baseline    ) - (intermediate_post1 - intermediate_baseline)`
# [1]  5 -2  6 -3
# $`(    beginner_post1 - beginner_baseline    ) - (    advanced_post1 - advanced_baseline    )`
# [1]  5 -2  4 -1
# $`(intermediate_post1 - intermediate_baseline) - (    advanced_post1 - advanced_baseline    )`
# [1]  6 -3  4 -1
© www.soinside.com 2019 - 2024. All rights reserved.