我有一個包含不同資料框的串列。串列的每個第 n 個資料幀都具有相同的結構。名單有點像這樣:
my_list <- list(list(data.frame(a= rnorm(10), b= rnorm(10)),
data.frame(abc= letters[1:10])),
list(data.frame(a= rnorm(10), b= rnorm(10)),
data.frame(abc= letters[11:20])))
我想要rbind.data.frame
每個串列的第一個資料框和每個串列的第二個資料框。因此,我的預期結果是:
list(rbind.data.frame(my_list[[1]][[1]], my_list[[2]][[1]]),
rbind.data.frame(my_list[[1]][[2]], my_list[[2]][[2]]))
在這個例子中,每個串列有兩個資料幀,但在我的情況下,資料幀的數量可以在再次運行代碼時改變。所以我需要一個系結每個第 n 個串列的通用解決方案。我怎樣才能用基礎 R 做到這一點?它必須是基數 R。
uj5u.com熱心網友回復:
選擇您感興趣的元素,例如
lapply(my_list, `[[`, 1)
對于第一個 data.frame。然后使用do.call()
到rbind
所選data.frames的串列
do.call(rbind, lapply(my_list, `[[`, 1))
使用提取任何串列元素的函式對此進行概括 i
FUN <- function(x, i)
do.call(rbind, lapply(x, `[[`, i))
并用于lapply()
生成您感興趣的多個 data.frames
lapply(1:2, FUN, x = my_list)
uj5u.com熱心網友回復:
我們可以使用transpose
frompurrr
然后將它們與bind_rows
library(dplyr)
library(purrr)
my_list %>%
transpose %>%
map(bind_rows)
-輸出
[[1]]
a b
1 -0.40658840 1.09857513
2 -2.32161471 -0.56369035
3 0.69620650 0.06641017
4 0.36916329 0.89903129
5 1.48593464 -0.01071652
6 -0.42947609 0.73611717
7 0.30131109 1.30576324
8 0.23362408 0.09240332
9 -0.06293769 0.20475366
10 -0.33819360 -0.92148073
11 0.86595847 0.97195603
12 0.07233009 0.18503846
13 -0.36391964 -0.34366129
14 -1.47300138 1.02652189
15 0.51676676 0.57571450
16 0.24114748 0.26843610
17 -0.86102844 -1.08844244
18 -1.08346107 2.30818241
19 -1.22420213 -1.06698399
20 -0.55371072 0.67798167
[[2]]
abc
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 j
11 k
12 l
13 m
14 n
15 o
16 p
17 q
18 r
19 s
20 t
或使用 base R
lapply(split(do.call(c, my_list), rep(c(TRUE, FALSE),
length(my_list))), \(x) do.call(rbind, x))
-輸出
$`FALSE`
abc
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 j
11 k
12 l
13 m
14 n
15 o
16 p
17 q
18 r
19 s
20 t
$`TRUE`
a b
1 -0.40658840 1.09857513
2 -2.32161471 -0.56369035
3 0.69620650 0.06641017
4 0.36916329 0.89903129
5 1.48593464 -0.01071652
6 -0.42947609 0.73611717
7 0.30131109 1.30576324
8 0.23362408 0.09240332
9 -0.06293769 0.20475366
10 -0.33819360 -0.92148073
11 0.86595847 0.97195603
12 0.07233009 0.18503846
13 -0.36391964 -0.34366129
14 -1.47300138 1.02652189
15 0.51676676 0.57571450
16 0.24114748 0.26843610
17 -0.86102844 -1.08844244
18 -1.08346107 2.30818241
19 -1.22420213 -1.06698399
20 -0.55371072 0.67798167
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/354140.html