gpt4 book ai didi

r - 将列表中的多个 data.tables 组合成两个 data.tables 的列表

转载 作者:行者123 更新时间:2023-12-01 13:18:36 25 4
gpt4 key购买 nike

我有一个函数(太长,无法粘贴在这里)将输出一个列表,其中包含两个都是 data.tables 的元素 - 让我们称它们为 AA 和 BB。每个单独的 data.table 将始终具有相同数量的用于函数调用的列,但行号可能不同。 AA 和 BB 没有匹配的列名。

这个函数将被多次调用,我想将函数调用中的所有 AA 和 BB data.tables(单独)组合('rbind')到一个列表中的两个更大的 data.tables 中。

为了说明我的意思,我创建了两个列表(A 和 B),每个列表包含两个 data.tables(AA 和 BB)。

require(data.table)

A_1 <- data.table(A = 1:2,B = 2:3)
A_2 <- data.table(C = 100:102,D = 300:302)
A <- list(AA = A_1,BB = A_2)

B_1 <- data.table(A = 2:4,B = 1:3)
B_2 <- data.table(C = 10:12,D = 20:22)
B <- list(AA = B_1,BB = B_2)

Return_list <- function(Name){

return(get(Name))
}

现在创建对象“List”,它是列表 A 和 B 的组合
List <- lapply(c("A","B"),Return_list)

我的预期输出如下(在我只调用函数两次的情况下):
List_output <- list(AA = rbind(A_1,B_1),BB = rbind(A_2,B_2))

我在 SO 上查看了很多示例,其中列表中的 data.tables 合并为一个;但是在这种情况下,我想将它们合并为两个,并且我似乎无法应用其他示例中的逻辑。

我玩过 rbindlist、unlist(...,recursive = FALSE) 和一大堆其他东西,但不幸的是还没有接近。

任何帮助将不胜感激。提前致谢。

最佳答案

我们可以用

library(tidyverse)
list(A, B) %>%
transpose %>%
map(bind_rows)

或与 rbindlist来自 data.table
library(data.table)
Map(function(...) rbindlist(list(...)), A, B)

关于r - 将列表中的多个 data.tables 组合成两个 data.tables 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52236362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com