gpt4 book ai didi

r - 如何将多个列表列表组合成一个数据框

转载 作者:行者123 更新时间:2023-12-04 09:38:32 25 4
gpt4 key购买 nike

我正在尝试将 2 个长度不等的列表组合成一个数据框。

我从一个包含 2 个矩阵的列表开始。

mtx_a <- matrix(data = c(1:24), nrow = 4)
mtx_b <- matrix(data = c(25:36), nrow = 3)
row.names(mtx_a) <- c("A", "B", "C", "D")
row.names(mtx_b) <- c("A", "B", "C")
colnames(mtx_a) <- c("V1", "V2", "W1", "W2", "X1", "X2")
colnames(mtx_b) <- c("Y1", "Y2", "Z1", "Z2")
mtx_list <- list(mtx_a, mtx_b)
names(mtx_list) <- c("mtx_a", "mtx_b")
mtx_list

我已经根据行名提取了特定行以进行检查。

mtx_list <- lapply(mtx_list, function(mtx_list){
mtx_list[row.names(mtx_list) %in% c("A"),]})

接下来,我根据索引提取了特定的列。 (交替列相当于条件 1 和 2)。

cond_1 <- lapply(lapply(mtx_list, function(mtx_list) {
mtx_list[c(T,F)]}), unname)
cond_2 <- lapply(lapply(mtx_list, function(mtx_list) {
mtx_list[c(F,T)]}), unname)

我正在尝试生成如下所示的数据框:

        cond_1   cond_2 
mtx_a 1 5
mtx_a 9 13
mtx_a 17 21
mtx_b 25 28
mtx_b 31 34

我尝试了以下但没有任何成功:

list(cond_1, cond_2)
library(plyr)
ldply(c(cond_1, cond_2))

最佳答案

首先提取所有 “A” 行,然后将其输入一个 2 列矩阵:

matrix(unlist(lapply(mtx_list, `[`, "A", )), ncol=2, byrow=TRUE)
# [,1] [,2]
#[1,] 1 5
#[2,] 9 13
#[3,] 17 21
#[4,] 25 28
#[5,] 31 34

如果需要,可以将其包装在 data.frame() 中。

关于r - 如何将多个列表列表组合成一个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46007558/

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