r - 如何使用 lapply 按行号范围对列表中的数据框进行子集化?
问题描述
我有一个数据框列表。我想提取每个数据帧的前 248 行,然后将它们绑定到一个数据帧中。
allData
是数据框的列表。我尝试使用lapply
withsubset
但我不知道如何在其中引用行号。函数的“子集”参数似乎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
推荐阅读
- excel - Excel公式检查一个单元格是否包含“Y”,如果它确实将一个单元格除以2。如果单元格包含“N”然后执行IFERROR VLOOKUP
- javascript - d3.js - 强制 - 我如何配置强制以使每个节点远离原始节点?
- python - Django 迁移根本没有迁移
- python - 运行 asyncio.run_coroutine_threadsafe(coro, loop) 时,返回的未来永远不会解决
- reactjs - javascript进入应用后,每个react.js包和next.js都能正常工作?
- python - 有没有一种简单的方法可以将此 API 获取请求转换为 DataFrame?
- oracle - oracle apex 中的透视报告以显示每行和每列的总数
- list - 如何 List.sum 一个列表(可能是浮点数)?
- git - 发布到 pub.dev 的 Git 操作在创建 credentials.json 时失败
- jquery - 检测 Class 是否在某个 Class 内有元素?