当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R subset 向量、矩阵和 DataFrame 的子集化


R语言 subset 位于 base 包(package)。

说明

返回满足条件的向量、矩阵或 DataFrame 的子集。

用法

subset(x, ...)

## Default S3 method:
subset(x, subset, ...)

## S3 method for class 'matrix'
subset(x, subset, select, drop = FALSE, ...)

## S3 method for class 'data.frame'
subset(x, subset, select, drop = FALSE, ...)

参数

x

要子集化的对象。

subset

指示要保留的元素或行的逻辑表达式:缺失值被视为 false。

select

表达式,指示从 DataFrame 中选择的列。

drop

传递给[ 索引运算符。

...

要传递给其他方法或从其他方法传递的进一步参数。

细节

这是一个通用函数,为矩阵、数据帧和向量(包括列表)提供了方法。包和用户可以添加更多方法。

对于普通向量,结果只是 x[subset & !is.na(subset)]

对于数据帧,subset 参数作用于行。请注意,subset 将在 DataFrame 中进行计算,因此列可以(按名称)引用为表达式中的变量(请参阅示例)。

select 参数仅适用于数据帧和矩阵的方法。它的工作原理是首先将选择表达式中的列名称替换为 DataFrame 中相应的列号,然后使用生成的整数向量对列进行索引。这允许使用标准索引约定,以便可以轻松指定列范围,或者可以删除单个列(请参阅示例)。

drop 参数传递给矩阵和数据帧的索引方法:请注意,矩阵的默认值与索引的默认值不同。

子集化后因子可能有空水平;未使用的级别不会自动删除。有关从数据帧中删除所有未使用级别的方法,请参阅droplevels

类似于 x 的对象仅包含选定的元素(对于向量)、行和列(对于矩阵或 DataFrame )等。

警告

这是一个旨在交互使用的便利函数。对于编程,最好使用标准子集函数,例如 [ ,特别是参数 subset 的非标准评估可能会产生意想不到的后果。

例子

subset(airquality, Temp > 80, select = c(Ozone, Temp))
subset(airquality, Day == 1, select = -Temp)
subset(airquality, select = Ozone:Wind)

with(airquality, subset(Ozone, Temp > 80))

## sometimes requiring a logical 'subset' argument is a nuisance
nm <- rownames(state.x77)
start_with_M <- nm %in% grep("^M", nm, value = TRUE)
subset(state.x77, start_with_M, Illiteracy:Murder)
# but in recent versions of R this can simply be
subset(state.x77, grepl("^M", nm), Illiteracy:Murder)

作者

Peter Dalgaard and Brian Ripley

也可以看看

[transform droplevels

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Subsetting Vectors, Matrices and Data Frames。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。