R语言不使用dplyr包实现数据过滤 求Base环境等效替代函数
R Base环境下dplyr::filter的替代方案
存在两种隶属于R Base Environment的原生方案,可实现与dplyr::filter()完全一致的行过滤功能:
subset()函数
是和dplyr::filter()使用习惯最接近的原生函数,支持直接传入过滤条件,无需反复指定数据框名,还可同时筛选需要保留的列。
示例:过滤mtcars数据集中气缸数为6、油耗表现优于20英里/加仑的观测:# dplyr写法参考 dplyr::filter(mtcars, cyl == 6, mpg > 20) # 对应base::subset写法 subset(mtcars, cyl == 6 & mpg > 20) # 同时仅保留mpg、wt两列的写法 subset(mtcars, cyl == 6 & mpg > 20, select = c(mpg, wt))- 基础方括号索引语法
是R最原生的数据筛选实现方式,利用数据框[行过滤条件, 列选择参数]的语法规则实现过滤,不需要调用额外函数。
示例:实现和上面完全一致的过滤需求:# 仅过滤行 mtcars[mtcars$cyl == 6 & mtcars$mpg > 20, ] # 同时过滤行和列 mtcars[mtcars$cyl == 6 & mtcars$mpg > 20, c("mpg", "wt")]
两种原生方案的过滤逻辑与dplyr::filter()完全一致,仅语法细节存在差异,无需安装额外包即可直接调用。
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

