簡體   English   中英

如何使用gsub在R中的向量中僅保留前幾個字符/數字?

[英]How to use gsub to keep only the first characters/numbers in a vector in R?

基本上,我只想在向量中保留第一個字符,我知道這可以在substr()中輕松完成,但是我想知道如何在gsub()中做到。

例如,

codes <- c("02Q","4E (1)","4S (1)","A0","A2","A4")

我想要一個像這樣的結果向量

c("0","4","4","A","A","A")

謝謝

你可以做

sub("^(\\w).*$", "\\1", codes)
#[1] "0" "4" "4" "A" "A" "A"

說明:

  • ^:表示字符串的開頭
  • \\ w:表示一個字母數字項目,用括號將其捕獲,然后通過將“ \\\\ 1”作為替換參數進行檢索
  • 。*:表示0次或多次
  • $:表示字符串的結尾

似乎您只想保留第一個字符。

gsub("(?<!^).", "", codes, perl=TRUE)
# [1] "0" "4" "4" "A" "A" "A"

(?<!^)否定性向后看,它斷言匹配將以行邊界的任何開頭(但不是開頭)開始。

要么

codes <- c("02Q","4E (1)","4S (1)","A0","A2","A4")
sub("(?<!^).*", "", codes, perl=T)
[1] "0" "4" "4" "A" "A" "A"

再多一點..

> sub("(?!^.).*", "", codes, perl=T)
[1] "0" "4" "4" "A" "A" "A"
> sub("\\B.*", "", codes, perl=T)
[1] "0" "4" "4" "A" "A" "A"

暫無
暫無

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

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