在下面的
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)
)
也许可以这样使用
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