在看到SO QUESTION
时,我脑海中浮现出一个问题onSetsChange(sets, index){
var setsFormArray = <FormArray>this.myForm.controls.sets;
(setsFormArray.at(index)).patchValue(sets);
console.log(index);
console.log(setsFormArray);
}
x <- list(c(1:6,32,24), c(1:4,8,10,12,13,17,24), c(1:5,9:15,17,18,19,20,32)) IND <- !duplicated(unlist(x))
> x
[[1]]
[1] 1 2 3 4 5 6 32 24
[[2]]
[1] 1 2 3 4 8 10 12 13 17 24
[[3]]
[1] 1 2 3 4 5 9 10 11 12 13 14 15 17 18 19 20 32
是否可以使用IND访问列表元素,所以我得到:
> IND [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE [23] FALSE TRUE FALSE TRUE FALSE FALSE TRUE TRUE FALSE TRUE TRUE TRUE FALSE
通常我会访问[[1]]
[1] 1 2 3 4 5 6 32 24
[[2]]
[1] 8 10 12 13 17
[[3]]
[1] 9 11 14 15 18 19 20
等元素......
答案 0 :(得分:2)
您可以尝试:
IND2 <-split(IND, rep(1:3, sapply(x, length)))
Map(function(x, y) x[y], x, IND2)
[[1]]
[1] 1 2 3 4 5 6 32 24
[[2]]
[1] 8 10 12 13 17
[[3]]
[1] 9 11 14 15 18 19 20
我们的想法是使用相应的长度将IND
向量转换回列表。然后使用Map循环遍历每个列表元素以进行子集化。
或试试reshape2&amp;整合解决方案:
library(tidyverse)
library(reshape2)
melt(x) %>%
filter(!duplicated(value)) %>%
with(., split(value, L1))