如何替换r中列中字符串的第二个字符

如何替换r中列中字符串的第二个字符,r,gsub,R,Gsub,下面是一个数据帧的示例 Type <- c('[C>A]','[C>G]','[C>T]') Subtype <- c('ACA','ACT','ACC') df <- cbind(Type, Subtype) df Type Subtype [1,] "[C>A]" "ACA" [2,] "[C>G]" "ACT" [3,] "[C>T

下面是一个数据帧的示例

Type <- c('[C>A]','[C>G]','[C>T]')
Subtype <- c('ACA','ACT','ACC')
df <- cbind(Type, Subtype)
df
     Type    Subtype
[1,] "[C>A]" "ACA"
[2,] "[C>G]" "ACT"
[3,] "[C>T]" "ACC"

使用
stringr
str\u替换

df[, 2] <- stringr::str_replace(df[, 2], '(?<=.).', df[, 1])
df
#       Type    Subtype  
#[1,] "[C>A]" "A[C>A]A"
#[2,] "[C>G]" "A[C>G]T"
#[3,] "[C>T]" "A[C>T]C"

df[,2]以下是您可以做的:

library(stringr)
df[,2] <- str_replace(df[,2],str_split(df[,2],"",simplify = T)[,2],df[,1])

> df
     Type    Subtype  
[1,] "[C>A]" "A[C>A]A"
[2,] "[C>G]" "A[C>G]T"
[3,] "[C>T]" "A[C>T]C"
库(stringr)
df[,2]df
类型子类型
[1]“[C>A]”“A[C>A]A”
[2]“[C>G]”“A[C>G]T”
[3]“[C>T]”“A[C>T]C”
天真的方法:

df[, 2] <- paste0(substr(df[, 2], 1, 1), df[, 1], substr(df[, 2], 3, 3))
df
#       Type    Subtype  
# [1,] "[C>A]" "A[C>A]A"
# [2,] "[C>G]" "A[C>G]T"
# [3,] "[C>T]" "A[C>T]C"

df[,2]嘿!你能解释一下它是如何工作的吗?它工作得很好,但我不知道它是如何工作的。你能解释一下正则表达式吗?非常感谢。我为正则表达式添加了一个解释。嗨,我注意到你到现在为止已经问了5个问题,但都没有接受。请考虑接受每一个对你的案例最有效的问题的答案。每个帖子你只能接受一个答案,但你可以随意投票。你可以参考
df[, 2] <- paste0(substr(df[, 2], 1, 1), df[, 1], substr(df[, 2], 3, 3))
df
#       Type    Subtype  
# [1,] "[C>A]" "A[C>A]A"
# [2,] "[C>G]" "A[C>G]T"
# [3,] "[C>T]" "A[C>T]C"