You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中如何按行名范围选取数据框的D至F行?

R语言选取数据框指定行名区间的行

问题背景

用户构建了如下数据框:

df <- data.frame('n' = integer())
df['A', 1] <- 2
df['B', 1] <- 5
df['C', 1] <- 3
df['D', 1] <- 8
df['E', 1] <- 4
df['F', 1] <- 6
df['G', 1] <- 9

需要选取行名为D到F的区间行,手动枚举行名df[c('D', 'E', 'F'), 1]虽然可行,但面对数百行的大型数据框效率极低。尝试使用df['D':'F', 1]或df[c('D':'F'), 1]均报错,需高效解决方案。

可行解决方案

方法1:通过行名索引位置切片

先定位目标行名对应的索引位置,再用索引区间选取行:

# 获取起始和结束行的索引
start_idx <- which(rownames(df) == 'D')
end_idx <- which(rownames(df) == 'F')

# 选取区间内的行
df[start_idx:end_idx, 1]

此方法不依赖手动枚举行名,只要目标行在数据框中是连续排列的,就能自动覆盖中间所有行。

方法2:使用match函数简化索引获取

match函数可以直接返回行名对应的位置,写法更简洁:

df[match('D', rownames(df)):match('F', rownames(df)), 1]

方法3:tidyverse工具链实现(dplyr)

如果你习惯使用tidyverse生态,可借助dplyr的slice函数:

library(dplyr)

df %>% 
  slice(which(rownames(.) == 'D'):which(rownames(.) == 'F'))

注意事项

以上方法均要求目标行在数据框中是按D-E-F的顺序连续存在的,如果行的排列顺序混乱,需先确保行序正确再使用这些方法。

内容的提问来源于stack exchange,提问作者Forklift17

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:22:51