R 如何复制字符串中的每个字符以及如何在字符串中的每个字符之间插入$

R 如何复制字符串中的每个字符以及如何在字符串中的每个字符之间插入$,r,regex,R,Regex,我想复制R Studio中的每个角色 a <- c("abcd") 我试过了 strrep(a, 2) 但它给了我“abcdabcd” 我想做的另一件事是: 我希望结果是“a$b$c$d”,在每个字符之间插入$ 有人能帮忙吗?越简单越好。gsub gsub("(.)", "\\1\\1", a) #[1] "aabbccdd" gsub("(.)", "\\1$", a) #[1] "a$b$c$d$" strsplit sapply(strsplit(a, ""), functi

我想复制R Studio中的每个角色

a <- c("abcd")
我试过了

strrep(a, 2)
但它给了我“abcdabcd”

我想做的另一件事是:

我希望结果是
“a$b$c$d”
,在每个字符之间插入
$

有人能帮忙吗?越简单越好。

gsub

gsub("(.)", "\\1\\1", a)
#[1] "aabbccdd"

gsub("(.)", "\\1$", a)
#[1] "a$b$c$d$"
strsplit

sapply(strsplit(a, ""), function(x) paste(rep(x, each = 2), collapse = ""))
#[1] "aabbccdd"

sapply(strsplit(a, ""), function(x) paste(paste0(x, "$"), collapse = ""))
#[1] "a$b$c$d$"
子字符串

sapply(a, function(x)
    paste(rep(substring(x, sequence(nchar(x)), sequence(nchar(x))), each = 2), collapse = ""))
#      abcd 
#"aabbccdd" 

sapply(a, function(x)
    paste(paste0(substring(x, sequence(nchar(x)), sequence(nchar(x))), "$"), collapse = ""))
#      abcd 
#"a$b$c$d$" 
另一种解决方案:

paste(unlist(lapply(1:nchar(a), function(k) rep(substr(a,k,k),2))), collapse="")
# [1] "aabbccdd"

paste(unlist(lapply(1:nchar(a), function(k) rep(substr(a,k,k),1))), collapse="$")
# [1] "a$b$c$d"

非常感谢你,这正是我需要的。我理解gsub函数,但是你能解释一下为什么模式是“(.””吗?我猜替换“\\1”是指字符串本身,对吗?
paste(unlist(lapply(1:nchar(a), function(k) rep(substr(a,k,k),2))), collapse="")
# [1] "aabbccdd"

paste(unlist(lapply(1:nchar(a), function(k) rep(substr(a,k,k),1))), collapse="$")
# [1] "a$b$c$d"