![](/img/trans.png)
[英]R - Dataframe - Replace characters in a string using two columns containing lists of positions and characters
[英]replace positions of elements in a string using R
我有一個字符串:
str = 'Mr[5]'
我想切換Mr
和5
在str
的位置,並得到如下結果:
result = '[5]Mr'
我如何在R中做到這一點?
您可以使用帶有2個匹配組的正則表達式來更改位置。 stringr
包有助於字符操作。
s <- c("Mr[5]", "Mr[3245]", "Mrs[98j]")
stringr::str_replace_all(s, "^(.*)(\\[.*\\])$", "\\2\\1")
#> [1] "[5]Mr" "[3245]Mr" "[98j]Mrs"
關於正則表達式
^
是字符串的開頭, $
是結尾 .*
匹配零個或多個時間的每個字符 (
和)
定義匹配組 \\\\[
和\\\\]
匹配文字括號 [5]
Mr
: "(.*)(\\\\[.*\\\\])"
\\\\1
表示第一個匹配組, \\\\2
表示第二個匹配組。 \\\\2\\\\1
反轉組 顯然,您可以創建一個完全適合您需要的更好的正則表達式。 具有匹配組的機制保持不變。 regex101是一個可以幫助您使用regex的好網站。 在R中, stringr
網站對正則表達式有很好的介紹
您可以使用gsub :
values <- c("Mr[5]","Mr[1234]", "Mrs[456]")
values2 <- gsub("^(.+)(\\[[0-9]+\\])$", "\\2\\1", values)
# > values2
# [1] "[5]Mr" "[1234]Mr" "[456]Mrs"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.