Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R将字符插入字符串_R - Fatal编程技术网

使用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)