使用R将字符插入字符串
我想在字符串中插入冒号字符一次、两次或三次。比如我想要使用R将字符插入字符串,r,R,我想在字符串中插入冒号字符一次、两次或三次。比如我想要 G*2413 => G*24:13 G*15122 => G*15:122 G*010101 => G*01:01:01 G*02010102 => G*02:01:01:02 如何使用R来完成此操作 have <- c('G*2413', 'G*15122', 'G*010101', 'G*02010102') want <- c('G*24:13', 'G*15:122', 'G*01:01:01'
G*2413 => G*24:13
G*15122 => G*15:122
G*010101 => G*01:01:01
G*02010102 => G*02:01:01:02
如何使用R来完成此操作
have <- c('G*2413', 'G*15122', 'G*010101', 'G*02010102')
want <- c('G*24:13', 'G*15:122', 'G*01:01:01', 'G*02:01:01:02')
have您可以尝试(\\d{2}(?!\\d?$)
使用gsub
,将每两个数字替换为自身后跟一个冒号字符,但后跟字符串结尾或字符串结尾的一个数字除外<代码>
是消极的前瞻语法,确保要匹配的模式后面没有其他模式:
gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*02010102", perl=T)
# [1] "G*02:01:01:02"
gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*010101", perl=T)
# [1] "G*01:01:01"
gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*15122", perl=T)
# [1] "G*15:122"
gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*2413", perl=T)
# [1] "G*24:13"
您可以使用gsub
尝试(\\d{2}(?!\\d?$)
,将每两位数字替换为后跟冒号字符,但后跟字符串结尾或字符串结尾的一位数字除外<代码>是消极的前瞻语法,确保要匹配的模式后面没有其他模式:
gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*02010102", perl=T)
# [1] "G*02:01:01:02"
gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*010101", perl=T)
# [1] "G*01:01:01"
gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*15122", perl=T)
# [1] "G*15:122"
gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*2413", perl=T)
# [1] "G*24:13"
我们也可以采用积极的态度
gsub("(\\d{2})(?=\\d{2})", "\\1:", have, perl = TRUE)
#[1] "G*24:13" "G*15:122" "G*01:01:01" "G*02:01:01:02"
我们也可以采用积极的态度
gsub("(\\d{2})(?=\\d{2})", "\\1:", have, perl = TRUE)
#[1] "G*24:13" "G*15:122" "G*01:01:01" "G*02:01:01:02"
(
?子字符串
和?sprintf
)或(?regepxr
和(?regmatches
或?粘贴
)。你试过什么了吗?(?子字符串
和?sprintf
)或(?regepxr
和(?regmatches
或?粘贴
)。你试过什么了吗?这个命令可以扩展到包括在特定数据的3位数字后插入冒号吗?A有一组预定义的数据值,我知道冒号应该插入数字3之后。我想知道是否可以包含if命令。@Mona您的意思是gsub((\\d{3})(?=\\d{2})”,“\\1:”,have,perl=TRUE)
这个命令是否可以扩展为在特定数据的3位数字后插入冒号?A有一组预定义的数据值,我知道冒号应该插入数字3之后。我想知道是否可以包含if命令。@Mona您的意思是gsub((\\d{3})(?=\\d{2})”,“\\1:”,have,perl=TRUE)