用来自另一个等长字符串变量的字符替换字符串变量中的给定字符

标签 r regex

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

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

所以 + 符号在 df$v1需要用 df$v2 中的字母替换与字符串开头的距离相同。有任何想法吗?

最佳答案

df$v1df$v2是我们可以使用的字符

regmatches(df$v1, gregexpr("\\+", df$v1)) <- regmatches(df$v2, gregexpr("\\+", df$v1))

那是,
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
rg包含 df$v1 中“+”的位置,我们方便地利用 regmatches替换 df$v1 中的匹配项无论是在 df$v2在相同的位置。

关于用来自另一个等长字符串变量的字符替换字符串变量中的给定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20645099/

相关文章:

regex - 如何检查一个数字的整个现有正则表达式?

识别 R 中的日期时间格式

r - 如何从多个向量创建数据框?

从 FTP 服务器检索文件的修改日期时间

使用正则表达式的 Python 深奥解释器

java - 在忽略大小写的情况下使用正则表达式匹配字符串

javascript - 使用正则表达式去除 HTML tagName

regex - 使用 egrep 的 2 个正则表达式之间的区别

r - 如何在 R 中的单个折线图上绘制矩阵的列

linux - R:getGraphicsEvent 在 windows 和 linux 下的行为不同——尤其是鼠标滚动