gpt4 book ai didi

R - 从 data.frames 列表中提取信息

转载 作者:行者123 更新时间:2023-12-02 09:22:01 25 4
gpt4 key购买 nike

我有两个需求,都连接到一个类似于下面可重现的数据集。我有一个 18 个实体的列表,每个实体由 17-19 个 data.frames 的列表组成。可重现的数据集如下(有矩阵而不是 data.frames,但我认为这没有区别):

test <- list(list(matrix(10:(50-1), ncol = 10), matrix(60:(100-1), ncol = 10), matrix(110:(150-1), ncol = 10)),
list(matrix(200:(500-1), ncol = 10), matrix(600:(1000-1), ncol = 10), matrix(1100:(1500-1), ncol = 10)))
  • 我需要将每个数据帧/矩阵分为两部分(按给定的行数)并保存到新的列表列表
  • 其次,我需要从列表列表中的每个 data.frame 中提取并保存给定的列。

  • 除了 for() 之外,我不知道如何去做,但我相信 apply() 函数系列应该可以做到。

    感谢您阅读

    编辑:

    我的预期输出如下所示:
    extractedColumns <- list(list(matrix(10:(50-1), ncol = 10)[, 2], matrix(60:(100-1), ncol = 10)[, 2], matrix(110:(150-1), ncol = 10)[, 2]),
    list(matrix(200:(500-1), ncol = 10)[, 2], matrix(600:(1000-1), ncol = 10)[, 2], matrix(1100:(1500-1), ncol = 10)[, 2]))


    numToSubset <- 3
    substetFrames <- list(list(list(matrix(10:(50-1), ncol = 10)["first length - numToSubset rows", ], matrix(10:(50-1), ncol = 10)["last numToSubset rows", ]),
    list(matrix(60:(100-1), ncol = 10)["first length - numToSubset rows", ], matrix(60:(100-1), ncol = 10)["last numToSubset rows", ]),
    list(matrix(110:(150-1), ncol = 10)["first length - numToSubset rows", ], matrix(110:(150-1), ncol = 10)["last numToSubset rows", ])),
    etc...)

    看起来很乱,希望你能按照我的要求去做。

    最佳答案

    您可以使用两个嵌套的 lapply s:

    lapply(test, function(x) lapply(x, '[', c(2, 3)))

    输出:
    [[1]]
    [[1]][[1]]
    [1] 11 12

    [[1]][[2]]
    [1] 61 62

    [[1]][[3]]
    [1] 111 112


    [[2]]
    [[2]][[1]]
    [1] 201 202

    [[2]][[2]]
    [1] 601 602

    [[2]][[3]]
    [1] 1101 1102

    解释

    第一个 lapply 将应用于 test 的两个列表。这两个列表中的每一个都包含另外 3 个。第二个 lapply 将迭代这 3 个列表和子集(即第二个 '[' 中的 lapply 函数)列 c(2, 3)

    注意:在矩阵的情况下, [ 将对元素 2 和 3 进行子集化,但在 data.frame 上使用时,相同的函数将对列进行子集化。

    子集行和列
    lapply 使用匿名函数非常灵活。通过将代码更改为:
    #change rows and columns into what you need
    lapply(test, function(x) lapply(x, function(y) y[rows, columns]))

    您可以指定所需的行或列的任意组合。

    关于R - 从 data.frames 列表中提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41856001/

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