vag*_*ond 3 string substring r
如果满足条件,我想用x替换x中字符串的第一个元素:如果x中的第一个元素"101"与y中的第一个字符串匹配,则将第一个元素"101"替换为空白.
x = c("101", "201", "301")
y = c("1", "7", "3")
Run Code Online (Sandbox Code Playgroud)
想:
> x
[1] "01" "201" "01"
Run Code Online (Sandbox Code Playgroud)
我在努力:
> ifelse(substr(x, 1, 1) == y, sub(substr(x, 1, 1), ""), x)
Run Code Online (Sandbox Code Playgroud)
我知道这是错误的,虽然不直观 - sub需要一个模式作为第一个参数而不会采取substr.
还尝试过:
> ifelse(substr(x, 1, 1) == y, substr(x, 1, 1) <- "", x)
[1] "" "201" ""
Run Code Online (Sandbox Code Playgroud)
我引用了这个R:我怎样才能代替字符串中的第5个元素?并使用以下方法解决
ifelse(substr(x, 1, 1) == y, paste(substr(x, 2, nchar(x))), x)
Run Code Online (Sandbox Code Playgroud)
想知道是否有更好的方法吗?
与第一个字符匹配的正则表达式是"^."(^字符串的开头,.是任何单个字符),因此sub请按照您的建议使用:
ifelse(substr(x, 1, 1) == y, sub("^.", "", x), x)
# [1] "01" "201" "01"
Run Code Online (Sandbox Code Playgroud)