我是使用R
的新手,我在使用gsub
正确格式化列表方面遇到了问题。我需要做两次更换。
@
之后用@mydomain.com
www.
替换为空值。更新
我目前正在运行gsub
两次并使用我的代码进行更正。我有太多gsub实例,我没有看到。
vec <- c('john@mail.com', 'mike@mail.com', 'robbie.b@yahoo.com',
'zack.l.harris@aol.com', 'www.google.com', 'www.gmail.com',
'www.domain.com', 'www.example.com')
vec <- gsub("@.*\\.com", "@mydomain.com", vec)
vec <- gsub("www\\.", "", vec)
print(vec)
更新
但我想将gsub
作为一个实例同时替换两个实例
答案 0 :(得分:4)
我完成此操作的一种方法是,您可以将gsub
个功能级联起来。
vec <- gsub('@[^.]*\\.[^.]*', '@mydomain.com', gsub('www\\.', '', vec))
print(vec)
另一种解决方案是为 old values
和 replacement values
re <- c('@[^.]*\\.[^.]*', 'www\\.')
val <- c('@mydomain.com', '')
recurse <- function(pattern, repl, x) {
for (i in 1:length(pattern))
x <- gsub(pattern[i], repl[i], x)
x
}
vec <- c('john@mail.com', 'mike@mail.com', 'robbie.b@yahoo.com',
'zack.l.harris@aol.com', 'www.google.com', 'www.gmail.com',
'www.domain.com', 'www.example.com')
print(recurse(re, val, vec))
输出
"john@mydomain.com" "mike@mydomain.com"
"robbie.b@mydomain.com" "zack.l.harris@mydomain.com"
"google.com" "gmail.com"
"domain.com" "example.com"