我有两个需求,都与下面可重现的数据集类似。我有一个包含18个实体的列表,每个实体由17-19个数据框组成。可重现的数据集如下所示(其中有矩阵而不是数据框,但我不认为这会有什么影响):
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()
的相当简单的方式,可能需要嵌套。您能否更新帖子并提供所需的输出? - C8H10N4O2extractedColumns
还是substetFrames
呢?在第2点中,你说提取给定的列,但是你尝试使用伪代码中的单词rows进行substetFrames
的提取,这是正确的吗? - Parfait