Я посмотрел в пакет sets
.
Предполагая, что N является vector
с режимом "list"
, как вы говорите, вы можете сделать:
N <- list(set(NULL, pair(3, 8), pair(3, 9), pair(8, 3)), set(NULL, pair(3, 2), pair(3, 8), pair(3, 9), pair(2, 3)))
N <- as.vector(N, mode = "list")
N
## [[1]]
## {<<NULL>>, (3, 8), (3, 9), (8, 3)}
## [[2]]
## {<<NULL>>, (2, 3), (3, 2), (3, 8), (3, 9)}
Удалить элемент <<NULL>>
каждого набора:
N.cl <- sapply(N, function(s) {s[[NULL]] <- NULL; s})
N.cl
## [[1]]
## {(3, 8), (3, 9), (8, 3)}
## [[2]]
## {(2, 3), (3, 2), (3, 8), (3, 9)}
# =================================================== ======================
Далее я просто покажу, что пытался раньше:
Предполагая, что N является list
, вы можете сделать:
require(sets)
N <- list(set(NULL, pair(3, 8), pair(3, 9), pair(8, 3)), set(NULL, pair(3, 2), pair(3, 8), pair(3, 9), pair(2, 3)))
N
дает:
## [[1]]
## {<<NULL>>, (3, 8), (3, 9), (8, 3)}
## [[2]]
## {<<NULL>>, (2, 3), (3, 2), (3, 8), (3, 9)}
Удаление первых элементов набора производится с помощью:
N.cl <- lapply(N, function(s) {s[[NULL]] <- NULL; s})
N.cl
затем дает:
## [[1]]
## {(3, 8), (3, 9), (8, 3)}
## [[2]]
## {(2, 3), (3, 2), (3, 8), (3, 9)}
Альтернативный метод (который я нашел первым) был:
# change the sets first to lists (the order in the set is kept):
N.as.lists <- lapply(N, as.list)
# remove first elements of those lists
N.as.lists.cleared <- lapply(N.as.lists, function(l) l[2:length(l)])
# change the lists to sets
N.cleared <- lapply(N.as.lists.cleared, as.set)
# inspect:
N.cleared
## [[1]]
## {(3, 8), (3, 9), (8, 3)}
## [[2]]
## {(2, 3), (3, 2), (3, 8), (3, 9)}