我有以下源向量:
source_vec <- c(1:3)
我想要做的是在选择一个值时通过拆分为两个来枚举向量,而另一个向量是互补的。 最后,它看起来像这样(手动):
from to
1,2 3
1,3 2
2,3 1
注意to
列只有一个值,而from可以是多个。
理想情况下,最终输出是数据帧/tibble,但 from
列是 list column .
如何使用 R 实现这一目标?
最佳答案
假设 DF 与最后的注释一样。那么 to
就是 source_vec
的总和减去 from
中每个条目的总和。
transform(DF, to = sum(source_vec) - sapply(from, sum))
给予:
from to
1 1, 2 3
2 1, 3 2
3 2, 3 1
这也可以表示为:
library(dplyr)
DF %>%
rowwise %>%
mutate(to = sum(source_vec) - sum(from)) %>%
ungroup
注意
DF <- data.frame(from = I(list(1:2, c(1, 3), 2:3)))
关于r - 如何根据R中的源向量创建相互互补的向量对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59278694/