R中匹配函數

在 R 中,字符串匹配是一個常見的任務,可以使用正則表達式或非正則表達式的方法來完成。以下是對這些方法的總結,包括在向量和數據框中的應用。

正則表達式匹配

常用函數
  1. grepl

    • 功能:檢查向量中的每個元素是否匹配某個正則表達式。
    • 返回值:邏輯向量,匹配的元素返回 TRUE,不匹配的返回 FALSE
    • 示例
      my_vector <- c("apple", "banana", "cherry", "date", "elderberry")
      matches <- grepl("a", my_vector)
      print(matches)  # 輸出: [1]  TRUE  TRUE FALSE  TRUE  TRUE
      
  2. grep

    • 功能:返回匹配正則表達式的元素的索引。
    • 返回值:整數向量,表示匹配的元素的索引。
    • 示例
      my_vector <- c("apple", "banana", "cherry", "date", "elderberry")
      indices <- grep("a", my_vector)
      print(indices)  # 輸出: [1] 1 2 4 5
      
  3. subgsub

    • sub:替換每個元素中第一次出現的匹配模式。
    • gsub:替換每個元素中所有出現的匹配模式。
    • 示例
      my_vector <- c("apple", "banana", "cherry", "date", "elderberry")
      sub_result <- sub("a", "X", my_vector)
      gsub_result <- gsub("a", "X", my_vector)
      print(sub_result)  # 輸出: [1] "Xpple"  "bXnXnX" "cherry" "dXte"  "elderberry"
      print(gsub_result)  # 輸出: [1] "Xpple"  "bXnXnX" "cherry" "dXte"  "elderXerry"
      
在數據框中使用
  • greplgrep

    • 可以對數據框的某一列使用 greplgrep
    • 示例
      my_df <- data.frame(name = c("Alice", "Bob", "Charlie", "David", "Eve"),description = c("apple lover", "banana fan", "cherry enthusiast", "date admirer", "elderberry connoisseur"),stringsAsFactors = FALSE
      )# 使用 grepl 檢查 description 列中哪些行包含 "a"
      matches <- grepl("a", my_df$description)
      print(matches)  # 輸出: [1]  TRUE  TRUE FALSE  TRUE  TRUE# 使用 grep 獲取匹配的行索引
      indices <- grep("a", my_df$description)
      print(indices)  # 輸出: [1] 1 2 4 5
      
  • subgsub

    • 可以對數據框的某一列使用 subgsub
    • 示例
      my_df <- data.frame(name = c("Alice", "Bob", "Charlie", "David", "Eve"),description = c("apple lover", "banana fan", "cherry enthusiast", "date admirer", "elderberry connoisseur"),stringsAsFactors = FALSE
      )# 使用 sub 替換 description 列中第一次出現的 "a"
      my_df$description <- sub("a", "X", my_df$description)
      print(my_df)
      

非正則表達式匹配

常用函數
  1. %in%

    • 功能:檢查向量中的元素是否存在于另一個向量中。
    • 返回值:邏輯向量,匹配的元素返回 TRUE,不匹配的返回 FALSE
    • 示例
      my_vector <- c("apple", "banana", "cherry", "date", "elderberry")
      search_vector <- c("banana", "date")
      matches <- my_vector %in% search_vector
      print(matches)  # 輸出: [1] FALSE  TRUE FALSE  TRUE FALSE
      
  2. match

    • 功能:返回向量中每個元素在另一個向量中的位置。
    • 返回值:整數向量,表示匹配的元素的位置,未匹配的返回 NA
    • 示例
      my_vector <- c("apple", "banana", "cherry", "date", "elderberry")
      search_vector <- c("banana", "date")
      indices <- match(my_vector, search_vector)
      print(indices)  # 輸出: [1] NA  1 NA  2 NA
      
在數據框中使用
  • %in%

    • 可以對數據框的某一列使用 %in%
    • 示例
      my_df <- data.frame(name = c("Alice", "Bob", "Charlie", "David", "Eve"),description = c("apple lover", "banana fan", "cherry enthusiast", "date admirer", "elderberry connoisseur"),stringsAsFactors = FALSE
      )# 使用 %in% 檢查 description 列中哪些行包含 "banana" 或 "date"
      search_vector <- c("banana fan", "date admirer")
      matches <- my_df$description %in% search_vector
      print(matches)  # 輸出: [1] FALSE  TRUE FALSE  TRUE FALSE
      
  • match

    • 可以對數據框的某一列使用 match
    • 示例
      my_df <- data.frame(name = c("Alice", "Bob", "Charlie", "David", "Eve"),description = c("apple lover", "banana fan", "cherry enthusiast", "date admirer", "elderberry connoisseur"),stringsAsFactors = FALSE
      )# 使用 match 獲取 description 列中每個元素在 search_vector 中的位置
      search_vector <- c("banana fan", "date admirer")
      indices <- match(my_df$description, search_vector)
      print(indices)  # 輸出: [1] NA  1 NA  2 NA
      

總結

  • 正則表達式匹配

    • grepl:檢查匹配,返回邏輯向量。
    • grep:返回匹配的索引。
    • subgsub:替換匹配的內容。
  • 非正則表達式匹配

    • %in%:檢查元素是否存在于另一個向量中,返回邏輯向量。
    • match:返回元素在另一個向量中的位置,未匹配的返回 NA

這些方法在向量和數據框中都可以使用,具體選擇哪種方法取決于你的具體需求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90996.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90996.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90996.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu服務器上JSP運行緩慢怎么辦?全面排查與優化方案

隨著企業系統越來越多地部署在Linux平臺上&#xff0c;Ubuntu成為JSP Web系統常見的部署環境。但不少開發者會遇到一個共同的問題&#xff1a;在Ubuntu服務器上運行的JSP項目訪問緩慢、頁面加載時間長&#xff0c;甚至出現卡頓現象。這類問題如果不及時解決&#xff0c;容易導致…

web刷題

[極客大挑戰 2019]RCE ME 打開環境&#xff0c;代碼邏輯還是很簡單的 思路是傳參code參數&#xff0c;一般傳參shell然后用蟻劍連接看flag&#xff0c;但是這題做了之后就會發現思路是沒錯但是這題多了一些驗證&#xff0c;這題就是無字符rce&#xff0c;可以考慮用取反&…

FFmpeg+javacpp中FFmpegFrameGrabber

FFmpegjavacpp中FFmpegFrameGrabber1、FFmpegFrameGrabber1.1 Demo使用1.2 音頻相關1.3 視頻相關2、Frame屬性2.1 視頻幀屬性2.2 音頻幀屬性2.3 音頻視頻區分JavaCV 1.5.12 API JavaCPP Presets for FFmpeg 7.1.1-1.5.12 API1、FFmpegFrameGrabber org\bytedeco\javacv\FFmpeg…

1-FPGA的LUT理解

FPGA的LUT理解 FPGA的4輸入LUT中&#xff0c;SRAM存儲的16位二進制數&#xff08;如 0110100110010110&#xff09;直接對應真值表的輸出值。下面通過具體例子詳細解釋其含義&#xff1a; 1. 4輸入LUT 4輸入LUT的本質是一個161的SRAM&#xff0c;它通過存儲真值表的方式實現任意…

Vue2文件上傳相關

導入彈窗<template><el-dialog:title"title":visible.sync"fileUploadVisible"append-to-bodyclose-on-click-modalclose-on-press-escapewidth"420px"><div v-if"showDatePicker">選擇時間&#xff1a;<el-date…

vue使用xlsx庫導出excel

引入xlsx庫 import XLSX from "xlsx";將后端接口返回的數據和列名&#xff0c;拼接到XLSX.utils.aoa_to_sheet中exportExcel() {debugger;if (!this.feedingTableData || this.feedingTableData.length "0") {this.$message.error("投料信息為空&…

卷積神經網絡(CNN)處理流程(簡化版)

前言 是看了這個大佬的視頻后想進行一下自己的整理&#xff08;流程只到了扁平化&#xff09;&#xff0c;如果有問題希望各位大佬能夠給予指正。卷積神經網絡&#xff08;CNN&#xff09;到底卷了啥&#xff1f;8分鐘帶你快速了解&#xff01;_嗶哩嗶哩_bilibilihttps://www.…

DBSyncer:開源免費的全能數據同步工具,多數據源無縫支持!

DBSyncer&#xff08;英[dbs??k??]&#xff0c;美[dbs??k?? 簡稱dbs&#xff09;是一款開源的數據同步中間件&#xff0c;提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步場景。支持上傳插件自定義同步轉換業務&#xff0c;提供…

kafka開啟Kerberos使用方式

kafka SASL_PLAINTEXT serviceName 配置&#xff1a; /etc/security/keytabs/kafka.service.keytab 對應的用戶名 $ cat /home/sunxy/kafka/jaas25.conf KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTabtrue renewTickettrue serviceName“ocd…

Unity教程(二十四)技能系統 投劍技能(中)技能變種實現

Unity開發2D類銀河惡魔城游戲學習筆記 Unity開發2D類銀河惡魔城游戲學習筆記目錄 技能系統 Unity教程&#xff08;二十一&#xff09;技能系統 基礎部分 Unity教程&#xff08;二十二&#xff09;技能系統 分身技能 Unity教程&#xff08;二十三&#xff09;技能系統 擲劍技能…

局域網TCP通過組播放地址rtp推流和拉流實現實時喊話

應用場景&#xff0c;安卓端局域網不用ip通過組播放地址實現實時對講功能發送端: ffmpeg -f alsa -i hw:1 -acodec aac -ab 64k -ac 2 -ar 16000 -frtp -sdp file stream.sdp rtp://224.0.0.1:14556接收端: ffmpeg -protocol whitelist file,udp,rtp -i stream.sdp -acodec pcm…

基于深度學習的醫學圖像分析:使用YOLOv5實現細胞檢測

最近研學過程中發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊鏈接跳轉到網站人工智能及編程語言學習教程。讀者們可以通過里面的文章詳細了解一下人工智能及其編程等教程和學習方法。下面開始對正文內容的…

32.768KHZ 3215晶振CM315D與NX3215SA應用全場景

在現代電子設備中&#xff0c;一粒米大小的晶振&#xff0c;卻是掌控時間精度的“心臟”。CITIZEN的CM315D系列與NDK的NX3215SA系列晶振便是其中的佼佼者&#xff0c;它們以 3.2 1.5 mm 的小尺寸”(厚度不足1mm)&#xff0c;成為智能設備中隱形的節奏大師。精準計時的奧秘這兩…

嵌軟面試——ARM Cortex-M寄存器組

Cortex-M內存架構包含16個通用寄存器&#xff0c;其中R0-R12是13個32位的通用寄存器&#xff0c;另外三個寄存器是特殊用途&#xff0c;分別是R13&#xff08;棧指針&#xff09;,R14&#xff08;鏈接寄存器&#xff09;,R15&#xff08;程序計數器&#xff09;。對于處理器來說…

7.DRF 過濾、排序、分頁

過濾Filtering 對于列表數據可能需要根據字段進行過濾&#xff0c;我們可以通過添加django-fitlter擴展來增強支持。 pip install django-filter在配置文件中增加過濾器類的全局設置&#xff1a; """drf配置信息必須全部寫在REST_FRAMEWORK配置項中""…

二、CUDA、Pytorch與依賴的工具包

CUDA Compute Unified Device Architecture&#xff08;統一計算架構&#xff09;。專門用于 GPU 通用計算 的平臺 編程接口。CUDA可以使你的程序&#xff08;比如矩陣、神經網絡&#xff09;由 GPU 執行&#xff0c;這比CPU能快幾十甚至上百倍。 PyTorch 是一個深度學習框架…

SpringCloude快速入門

近期簡單了解一下SpringCloude微服務,本文主要就是我學習中所記錄的筆記,然后具體原理可能等以后再來深究,本文可能有些地方用詞不專業還望包容一下,感興趣可以參考官方文檔來深入學習一下微服務,然后我的下一步學習就是docker和linux了。 nacos: Nacos 快速開始 | Nacos 官網…

GPT Agent與Comet AI Aent瀏覽器對比橫評

1. 架構設計差異GPT Agent的雙瀏覽器架構&#xff1a;文本瀏覽器&#xff1a;專門用于高效處理大量文本內容&#xff0c;適合深度信息檢索和文獻追蹤&#xff0c;相當于Deep Research的延續可視化瀏覽器&#xff1a;具備界面識別與交互能力&#xff0c;可以點擊網頁按鈕、識別圖…

應用信息更新至1.18.0

增加DO權限 增加權限管理&#xff08;需DO支持&#xff09; 增加應用凍結隱藏&#xff08;需DO支持&#xff09; 增加權限委托&#xff08;需DO支持&#xff09; 增加特殊組件 ...

常用git命令集錦

git init 初始化 將當前目錄初始化為 git 本地倉庫&#xff0c;此時會在本地創建一個 .git 的文件夾 git init -q 靜默執行&#xff0c;就是在后臺執行 git init --bare –bare 參數,一般用來初始化一個空的目錄&#xff0c;作為遠程存儲倉庫 git init --template dir –templa…