向 R 中列表子列表中的每个数据框添加一个向量

Adding a vector to each data frame sublisted in a list in R

我有

A <- rep(list(data.frame(a=c(1,2,3,2,1,4),b=c(7,3,1,2,2,1),c=c(2,3,7,2,2,8))),10)
B <- c(2,1,3,2,5,5)

我想将 B 作为列表 A

中每个 data.frame 的一列

类似

[[1]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

[[2]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

我有 一些东西,但我不知道它是如何工作的 Map()mapply()...

这里你想要的功能是lapply()lapply() 函数对列表的每个元素和 returns 列表执行另一个功能。

一种可能的解决方案,使用简化的符号,在@BenNorris 的评论中建议如下:

A <- rep(list(data.frame(a=c(1,2,3,2,1,4),b=c(7,3,1,2,2,1),c=c(2,3,7,2,2,8))),10)
B <- c(2,1,3,2,5,5)

lapply(A, cbind, d = B)

#> [[1]]
#>   a b c d
#> 1 1 7 2 2
#> 2 2 3 3 1
#> 3 3 1 7 3
#> 4 2 2 2 2
#> 5 1 2 2 5
#> 6 4 1 8 5
#> 
#> [[2]]
#>   a b c d
#> 1 1 7 2 2
#> 2 2 3 3 1
#> 3 3 1 7 3
#> 4 2 2 2 2
#> 5 1 2 2 5
#> 6 4 1 8 5
#> 
#> [[3]]
#>   a b c d
#> 1 1 7 2 2
#> 2 2 3 3 1
#> 3 3 1 7 3
#> 4 2 2 2 2
#> 5 1 2 2 5
#> 6 4 1 8 5
#> 
#> [[4]]
#>   a b c d
#> 1 1 7 2 2
#> 2 2 3 3 1
#> 3 3 1 7 3
#> 4 2 2 2 2
#> 5 1 2 2 5
#> 6 4 1 8 5
#> 
#> [[5]]
#>   a b c d
#> 1 1 7 2 2
#> 2 2 3 3 1
#> 3 3 1 7 3
#> 4 2 2 2 2
#> 5 1 2 2 5
#> 6 4 1 8 5
#> 
#> [[6]]
#>   a b c d
#> 1 1 7 2 2
#> 2 2 3 3 1
#> 3 3 1 7 3
#> 4 2 2 2 2
#> 5 1 2 2 5
#> 6 4 1 8 5
#> 
#> [[7]]
#>   a b c d
#> 1 1 7 2 2
#> 2 2 3 3 1
#> 3 3 1 7 3
#> 4 2 2 2 2
#> 5 1 2 2 5
#> 6 4 1 8 5
#> 
#> [[8]]
#>   a b c d
#> 1 1 7 2 2
#> 2 2 3 3 1
#> 3 3 1 7 3
#> 4 2 2 2 2
#> 5 1 2 2 5
#> 6 4 1 8 5
#> 
#> [[9]]
#>   a b c d
#> 1 1 7 2 2
#> 2 2 3 3 1
#> 3 3 1 7 3
#> 4 2 2 2 2
#> 5 1 2 2 5
#> 6 4 1 8 5
#> 
#> [[10]]
#>   a b c d
#> 1 1 7 2 2
#> 2 2 3 3 1
#> 3 3 1 7 3
#> 4 2 2 2 2
#> 5 1 2 2 5
#> 6 4 1 8 5

像这样Map试试

> Map(cbind, A, d = list(B))
[[1]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

[[2]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

[[3]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

[[4]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

[[5]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

[[6]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

[[7]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

[[8]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

[[9]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

[[10]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

tidyverse

中的类似选项
library(dplyr)
library(dplyr)
map(A, mutate, d = B)

-输出

[[1]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5

[[2]]
  a b c d
1 1 7 2 2
2 2 3 3 1
3 3 1 7 3
4 2 2 2 2
5 1 2 2 5
6 4 1 8 5
...