簡體   English   中英

R - Gsub回歸第一場比賽

[英]R - Gsub return first match

我想從測試向量中提取12和0。 每次我嘗試它會給我120或12:0

TestVector <- c("12:0")
gsub("\\b[:numeric:]*",replacement = "\\1", x = TestVector, fixed = F)

我可以用什么來提取12和0.我們可以只有一個我只提取12,所以我可以改變它來提取0.我們可以用gsub專門做這個嗎?

一個選項,不涉及使用顯式正則表達式,將使用strsplit()並拆分冒號上的時間戳:

TestVector <- c("12:0")
parts <- unlist(strsplit(TestVector, ":")))
> parts[1]
[1] "12"
> parts[2]
[1] "0"

試試這個

gsub("\\b(\\d+):(\\d+)\\b",replacement = "\\1 \\2", x = TestVector, fixed = F)

正則表達式細分

\\b #Word boundary
  (\\d+) #Find all digits before :
   :  #Match literally colon
  (\\d+) #Find all digits after :
\\b #Word boundary

我認為在R沒有名為[:numeric:]命名類,直到我知道,但它已命名為類[[:digit:]] 你可以用它作為

gsub("\\b([[:digit:]]+):([[:digit:]]+)\\b",replacement = "\\1  \\2", x = TestVector)

正如rawr所建議的那樣,更簡單直觀的方法就是簡單地用space替換:

gsub(":",replacement = " ", x = TestVector, fixed = F)

這可以使用來自base R scan來完成

 scan(text=TestVector, sep=":", what=numeric(), quiet=TRUE)
 #[1] 12  0

或者使用str_extract

library(stringr)
str_extract_all(TestVector, "[^:]+")[[1]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM