r - 如何使用 lapply 按行号范围对列表中的数据帧进行子集化?

标签 r data-analysis data-cleaning

我有一个数据框列表。我想提取每个数据帧的前 248 行,然后将它们绑定(bind)到一个数据帧中。

allData 是数据帧列表。我尝试将 lapplysubset 一起使用,但我不知道如何引用其中的行号。 subset 函数的“子集”参数似乎只接受逻辑向量。

temp <- lapply(allData, subset, subset = (row.names(allData) <= 248))

这段代码是我的想法,但行不通,因为 row.names(allData) 实际上只适用于列表本身,而不适用于数据框。那么如何引用每个数据框的行号呢?

最佳答案

使用 base R,我们可以做到

do.call(rbind, lapply(allData, function(x) x[1:248, ]))

或与 purrr

purrr::map_dfr(allData, ~.[1:248, ])

使用包含 mtcars 数据的可重现示例,并对前 5 行进行子集化。

allData <- list(mtcars, mtcars)
do.call(rbind, lapply(allData, function(x) x[1:5, ]))

#                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
#Mazda RX4          21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag      21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#Datsun 710         22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive     21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout  18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
#Mazda RX41         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag1     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#Datsun 7101        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive1    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout1 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2

关于r - 如何使用 lapply 按行号范围对列表中的数据帧进行子集化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56750090/

相关文章:

R:na.locf 的行为不符合预期

html - 解析xml属性: strange Encoding issue

read_html 不从简单的 html 页面检索所有数据,而是返回不完整的 html?

python - 如何将 ML 算法与词袋中的特征向量数据结合使用?

r - 如何在具有大量 NA 的时间序列数据框中找到值最多的区间?

r - 如果列中包含子字符串,如何检查列中的每一行

vba - 使用 VBA 从分布中生成随机数到内存

r - 分离单个事件的方法

algorithm - 依靠字符串匹配算法清理和规范化大量数据的最佳方法

python - 无法将干净的 unicode 文本插入 pandas 中的 DataFrame