R: 固定的完整字符串的 gsub = T
R: gsub of exact full string with fixed = T
我正在尝试 gsub
精确的完整字符串 - 我知道我需要使用 ^
和 $
。问题是我在字符串中有特殊字符(可能是 [
,或 .
)所以我需要使用 fixed=T
。这会覆盖 ^
和 $
。任何解决方案表示赞赏。
需要将 exact_orig
中的第一个、第二个元素替换为 exact_change
中的第一个、第二个元素,但前提是整个字符串从头到尾都匹配。
exact_orig = c("oz","32 oz")
exact_change = c("20 oz","32 ct")
gsub_FixedTrue <- function(i) {
for(k in seq_along(exact_orig)) i = gsub(exact_orig[k],exact_change[k],i,fixed=TRUE)
return(i)
}
测试用例:
print(gsub_FixedTrue("32 oz")) #gives me "32 20 oz" - wrong! Must be "32 ct"
print(gsub_FixedTrue("oz oz")) # gives me "20 oz 20 oz" - wrong! Must remain as "oz oz"
我读了一个有点类似的线程,但无法使其适用于完整的字符串 (grep at the beginning of the string with fixed =T in R?)
如果你想精确匹配完整的字符串,我认为你真的不想在这种情况下使用正则表达式。 match()
函数
怎么样
fixedTrue<-function(x) {
m <- match(x, exact_orig)
x[!is.na(m)] <- exact_change[m[!is.na(m)]]
x
}
fixedTrue(c("32 oz","oz oz"))
# [1] "32 ct" "oz oz"
我正在尝试 gsub
精确的完整字符串 - 我知道我需要使用 ^
和 $
。问题是我在字符串中有特殊字符(可能是 [
,或 .
)所以我需要使用 fixed=T
。这会覆盖 ^
和 $
。任何解决方案表示赞赏。
需要将 exact_orig
中的第一个、第二个元素替换为 exact_change
中的第一个、第二个元素,但前提是整个字符串从头到尾都匹配。
exact_orig = c("oz","32 oz")
exact_change = c("20 oz","32 ct")
gsub_FixedTrue <- function(i) {
for(k in seq_along(exact_orig)) i = gsub(exact_orig[k],exact_change[k],i,fixed=TRUE)
return(i)
}
测试用例:
print(gsub_FixedTrue("32 oz")) #gives me "32 20 oz" - wrong! Must be "32 ct"
print(gsub_FixedTrue("oz oz")) # gives me "20 oz 20 oz" - wrong! Must remain as "oz oz"
我读了一个有点类似的线程,但无法使其适用于完整的字符串 (grep at the beginning of the string with fixed =T in R?)
如果你想精确匹配完整的字符串,我认为你真的不想在这种情况下使用正则表达式。 match()
函数
fixedTrue<-function(x) {
m <- match(x, exact_orig)
x[!is.na(m)] <- exact_change[m[!is.na(m)]]
x
}
fixedTrue(c("32 oz","oz oz"))
# [1] "32 ct" "oz oz"