我想将一个df与多个逻辑向量合并。这是我想要的示例:
a <- c(1, 2, 3, 4, 5)
b <- c(1.1, 5.4, 9.3, 6.1 ,4.5)
df <- data.frame(cbind(a,b))
df1 <- data.frame(cbind(a,b))
df2 <- data.frame(cbind(a,b))
list1 <- list(df, df1, df2)
在我的数据中,df1
和df2
与df
不同,但更容易。
我有逻辑向量,我想将它们与第一个列表的第一个df绑定。
vc <- c(TRUE, FALSE, TRUE, TRUE,FALSE)
vc1 <- c(FALSE, FALSE, TRUE, TRUE, FALSE)
vc2 <- c(TRUE, TRUE, TRUE, TRUE, TRUE)
list2 <- list(vc, vc1, vc2)
我知道一次要怎么做。
list2[[1]] <- cbind(vc, df)
list2[[2]] <- cbind(vc1, df)
list2[[3]] <- cbind(vc2, df)
所以最终结果将是:
list2
[[1]]
vc a b
1 TRUE 1 1.1
2 FALSE 2 5.4
3 TRUE 3 9.3
4 TRUE 4 6.1
5 FALSE 5 4.5
[[2]]
vc1 a b
1 FALSE 1 1.1
2 FALSE 2 5.4
3 TRUE 3 9.3
4 TRUE 4 6.1
5 FALSE 5 4.5
[[3]]
vc2 a b
1 TRUE 1 1.1
2 TRUE 2 5.4
3 TRUE 3 9.3
4 TRUE 4 6.1
5 TRUE 5 4.5
但是我确实有很多数据,要花上几年的时间。
答案 0 :(得分:2)
您可以在这里使用lapply:
a <- c(1, 2, 3, 4, 5)
b <- c(1.1, 5.4, 9.3, 6.1 ,4.5)
df <- data.frame(a,b)
vc <- c(TRUE, FALSE, TRUE, TRUE,FALSE)
vc1 <- c(FALSE, FALSE, TRUE, TRUE, FALSE)
vc2 <- c(TRUE, TRUE, TRUE, TRUE, TRUE)
list2 <- list(vc, vc1, vc2)
lapply(list2, function(l) cbind(l, df))
#> [[1]]
#> l a b
#> 1 TRUE 1 1.1
#> 2 FALSE 2 5.4
#> 3 TRUE 3 9.3
#> 4 TRUE 4 6.1
#> 5 FALSE 5 4.5
#>
#> [[2]]
#> l a b
#> 1 FALSE 1 1.1
#> 2 FALSE 2 5.4
#> 3 TRUE 3 9.3
#> 4 TRUE 4 6.1
#> 5 FALSE 5 4.5
#>
#> [[3]]
#> l a b
#> 1 TRUE 1 1.1
#> 2 TRUE 2 5.4
#> 3 TRUE 3 9.3
#> 4 TRUE 4 6.1
#> 5 TRUE 5 4.5
答案 1 :(得分:2)
如果要使用提供的所有对象:将矢量和数据帧放入列表中,并使用cbind
逐一Map
。
Map(cbind, vc=list(vc, vc1, vc2), list(df, df1, df2))
# [[1]]
# vc a b
# 1 TRUE 1 1.1
# 2 FALSE 2 5.4
# 3 TRUE 3 9.3
# 4 TRUE 4 6.1
# 5 FALSE 5 4.5
#
# [[2]]
# vc a b
# 1 FALSE 1 1.1
# 2 FALSE 2 5.4
# 3 TRUE 3 9.3
# 4 TRUE 4 6.1
# 5 FALSE 5 4.5
#
# [[3]]
# vc a b
# 1 TRUE 1 1.1
# 2 TRUE 2 5.4
# 3 TRUE 3 9.3
# 4 TRUE 4 6.1
# 5 TRUE 5 4.5
答案 2 :(得分:2)
带有bind_cols
和map
的选项
library(purrr)
map(list2, ~ bind_cols(l = .x, df))