将向量添加到列表的组成部分

时间:2018-10-22 15:50:41

标签: r

我有以下列表:

A <- c(11)
B <- c(7, 13)
C <- c(1, 10, 11, 12)
my_list <- list(A, B, C)
> my_list
[[1]]
[1] 11

[[2]]
[1]  7 13

[[3]]
[1]  1 10 11 12

我想在此列表中的每个数字上加上-2,-1、0、1和2,并保留每个列表元素中的所有唯一值,以获得以下结果列表:

> my_new_list
[[1]]
[1] 9 10 11 12 13

[[2]]
[1]  5 6 7 8 9 11 12 13 14 15

[[3]]
[1]  -1 0 1 2 3 8 9 10 11 12 13 14

我尝试了以下代码,但没有得到我想要的结果:

my_new_list <- lapply(res, `+`, -2:2)
> my_new_list
$`1`
[1]  9 10 11 12 13

$`2`
[1]  5 12  7 14  9

$`3`
[1] -1  9 11 13  3

为什么会这样,我如何获得想要的结果?谢谢!

2 个答案:

答案 0 :(得分:3)

假设我们需要PGPASSWORD=password; pg_restore --host "hostname" --port "port" --username "postgres" --no-password --verbose --dbname "dbname" --schema "schema" "dump_filename";

unique

或使用lapply(my_list, function(x) sort(unique(unlist(lapply(x, `+`, -2:2)))))

outer

或使用lapply(my_list, function(x) sort(unique(c(outer(x, -2:2, `+`))))) 并重新设置

rep

答案 1 :(得分:2)

如何?

my_new_list <- lapply(my_list, function(x) unique(union(x,sapply(x, function(y) y +c(-2:2))    )))
my_new_list <-  lapply(my_new_list, sort)
my_new_list

[[1]]
[1]  9 10 11 12 13

[[2]]
 [1]  5  6  7  8  9 11 12 13 14 15

[[3]]
 [1] -1  0  1  2  3  8  9 10 11 12 13 14