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