将字符串变量中的给定字符替换为另一个长度相等的字符串变量中的字符

Bra*_*den 4 regex r

我有一个数据框,其中包含两个字符串变量,字符数相同.这些字符串代表学生对某些考试的回答.第一个字符串包含正确回答的每个问题的+号和每个错误项的错误响应.第二个字符串包含所有正确的答案.我想用第二个字符串中的正确答案替换第一个字符串中的所有+符号.可以使用以下代码创建简化的启发式数据集:

df <- data.frame(v1 = c("+AA+B", "D++CC", "A+BAD"), 
                 v2 = c("DBBAD", "BDCAD","CDCCA"), stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)

因此,df$v1需要更换+符号,其中的字母df$v2与字符串的开头距离相同.有任何想法吗?

Jul*_*ora 10

什么时候df$v1df$v2我们可能使用的角色

regmatches(df$v1, gregexpr("\\+", df$v1)) <- regmatches(df$v2, gregexpr("\\+", df$v1))
Run Code Online (Sandbox Code Playgroud)

那是,

df <- data.frame(v1 = c("+AA+B", "D++CC", "A+BAD"), 
                 v2 = c("DBBAD", "BDCAD", "CDCCA"), 
                 stringsAsFactors = FALSE)
rg <- gregexpr("\\+", df$v1)
regmatches(df$v1, rg) <- regmatches(df$v2, rg)
df
#      v1    v2
# 1 DAAAB DBBAD
# 2 DDCCC BDCAD
# 3 ADBAD CDCCA
Run Code Online (Sandbox Code Playgroud)

rg包含"+"的位置df$v1,我们可以方便地利用regmatches这些匹配替换同一位置的df$v1任何内容df$v2.