R 函数将不同长度的嵌套列表转换为数据帧
我有一个包含10000个嵌套列表的列表,其中包含两个组件(“x”和“y”)。e、 g 我尝试过很多方法,但至今都失败了。 有没有一个有效的方法来做到这一点 非常感谢,,R 函数将不同长度的嵌套列表转换为数据帧,r,nested-lists,R,Nested Lists,我有一个包含10000个嵌套列表的列表,其中包含两个组件(“x”和“y”)。e、 g 我尝试过很多方法,但至今都失败了。 有没有一个有效的方法来做到这一点 非常感谢,, Graham您可以为All中的每个list创建一个两列数据框,并将它们连接起来 library(dplyr) library(purrr) map(All, bind_rows) %>% reduce(full_join, by = 'x') %>% arrange(x) %>%
Graham您可以为
All
中的每个list
创建一个两列数据框,并将它们连接起来
library(dplyr)
library(purrr)
map(All, bind_rows) %>%
reduce(full_join, by = 'x') %>%
arrange(x) %>%
rename_with(~names(All), -1)
# A tibble: 8 x 4
# x iter1 iter2 iter3
# <dbl> <dbl> <dbl> <dbl>
#1 8490 NA 1.2 NA
#2 8500 1.2 1.2 NA
#3 8510 1.3 1.3 1.2
#4 8520 1.4 1.4 1.2
#5 8530 1.5 1.5 1.3
#6 8540 NA NA 1.4
#7 8550 NA NA 1.5
#8 8560 NA NA 1.6
您可以为
All
中的每个list
创建一个2列数据框,并将它们连接起来
library(dplyr)
library(purrr)
map(All, bind_rows) %>%
reduce(full_join, by = 'x') %>%
arrange(x) %>%
rename_with(~names(All), -1)
# A tibble: 8 x 4
# x iter1 iter2 iter3
# <dbl> <dbl> <dbl> <dbl>
#1 8490 NA 1.2 NA
#2 8500 1.2 1.2 NA
#3 8510 1.3 1.3 1.2
#4 8520 1.4 1.4 1.2
#5 8530 1.5 1.5 1.3
#6 8540 NA NA 1.4
#7 8550 NA NA 1.5
#8 8560 NA NA 1.6
非常感谢。My R似乎无法识别dplyr中的“rename_with”函数,但第二种方法效果很好。
rename_with
在较新版本的dplyr
(dplyr 1.0.0
)在较旧版本中,您可以使用rename_at(-1,~names(All))
@Graham很高兴能提供帮助!点击左边的复选标记,您可以自由选择:-)您只能接受每篇文章的一个答案。非常感谢。My R似乎无法识别dplyr中的“rename_with”函数,但第二种方法效果很好。rename_with
在较新版本的dplyr
(dplyr 1.0.0
)在较旧版本中,您可以使用rename_at(-1,~names(All))
@Graham很高兴能提供帮助!点击左边的复选标记,您可以自由选择:-)每篇文章只能接受一个答案。
library(dplyr)
library(purrr)
map(All, bind_rows) %>%
reduce(full_join, by = 'x') %>%
arrange(x) %>%
rename_with(~names(All), -1)
# A tibble: 8 x 4
# x iter1 iter2 iter3
# <dbl> <dbl> <dbl> <dbl>
#1 8490 NA 1.2 NA
#2 8500 1.2 1.2 NA
#3 8510 1.3 1.3 1.2
#4 8520 1.4 1.4 1.2
#5 8530 1.5 1.5 1.3
#6 8540 NA NA 1.4
#7 8550 NA NA 1.5
#8 8560 NA NA 1.6
Reduce(function(x, y) merge(x, y, all = TRUE, by = 'x'),
lapply(All, function(x) do.call(cbind.data.frame, x)))