博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
R语言之匹配篇
阅读量:6220 次
发布时间:2019-06-21

本文共 1440 字,大约阅读时间需要 4 分钟。

hot3.png

match

   match函数的声明如下:

match(x, table, nomatch = NA_integer_, incomparables = NULL)

    x: 向量, 要匹配的值;

    table: 向量, 被匹配的值;

    nomatch: 没匹配上的返回值, 必须是整数;

    incomparables: 指定不能用来匹配的值.

    match函数是一个完全匹配函数, 当两个元素类型不一样时, 如果进行类型转换后匹配得上的话, 则仍可匹配, 可看下例.

match(c(1, "TRUE"), c("1", T))

pmatch

   pmatch函数的声明如下:

pmatch(x, table, nomatch = NA_integer_, duplicates.ok = FALSE)

    x: 向量, 要匹配的值;

    table: 向量, 被匹配的值;

    nomatch: 没匹配上的返回值, 必须是整数;

    duplicates.ok: table里面的元素是否可以适用多次.

    pmatch函数是一个部分匹配函数, 依次从x里面挑出元素, 对照table进行匹配, 若匹配上则剔除匹配上的值, 不再参与下次匹配, duplicate.ok可设置是否剔除; 对于某一个元素, 匹配一共分成三步:

    1. 如果可以完全匹配, 则认为匹配上了, 返回table中的位置;

    2. 不满足上述条件, 如果是唯一部分匹配, 则返回table中的位置;

    3. 不满足上述条件, 则认为没有值与其匹配上.

pmatch(rep(1, 3), rep(1, 5))pmatch(rep(1, 3), rep(1, 5), duplicates.ok = TRUE)

运用

    setdiff是R语言用来实现集合的减法的函数, 函数的声明如下:

setdiff(x, y)

    函数的定义如下:

function (x, y) {    x <- as.vector(x)    y <- as.vector(y)    unique(if (length(x) || length(y))         x[match(x, y, 0L) == 0L]    else x)}

   不难分析, 函数的返回值是不重复的, 但是也有很多情况下, x中元素是有重复的, y中元素是有重复的, 而我们想获得的结果也允许重复的, 那么这就不符合我们的预期了, 下面我们来改写下这个函数.

    分析下简单情形, 如果y中的元素全都出现在x中, 那么新函数可以如下:

function (x, y) {    x <- as.vector(x)    y <- as.vector(y)    if (length(x) || length(y))         x[is.na(pmatch(x, y))]    else x}

    所以, 若y中元素既有在x中又有不在x中时, 只需将在x中的元素找出来即可, 那么新函数如下:

function (x, y) {    x <- as.vector(x)    y <- as.vector(y)    if (length(x) || length(y))         x[is.na(pmatch(x, y[!is.na(match(y, x))]))]    else x}

转载于:https://my.oschina.net/u/1791586/blog/285750

你可能感兴趣的文章
Android路由框架-ARouter详解
查看>>
Eclipse快捷键大全(转载)
查看>>
众包平台发布一波关于运维开发需求,多少钱由你来报
查看>>
VLAN与Trunk配置
查看>>
PHP SESSION信息保存在哪
查看>>
原创:软件架构那点事儿(三)
查看>>
Java Web开发环境的搭建(一)
查看>>
情感生活 文章写的很好
查看>>
java获取txt文件编码格式
查看>>
ccna 05 管理cisco设备
查看>>
通过C打开网页的几种方法
查看>>
rman 备份恢复
查看>>
ubuntu下安装mysql
查看>>
书”软技能:代码之外的生存指南“读后感三(学习)
查看>>
Git使用问题
查看>>
centos7 更新源
查看>>
优化Linux下的内核TCP参数来提高服务器负载能力
查看>>
通过 ulimit 改善系统性能
查看>>
PHP封装一个遍历文件夹下面得所有的文件的类
查看>>
jquery ui (一)简介
查看>>