4

我是新手,我在使用正确格式化我的列表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作为一个实例同时替换两者。

4

1 回答 1

4

One way I've done this, you could cascade your gsub functions together.

vec <- gsub('@[^.]*\\.[^.]*', '@mydomain.com', gsub('www\\.', '', vec))
print(vec)

Another solution is to create vectors for your old values and 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))

Output

"john@mydomain.com"          "mike@mydomain.com"         
"robbie.b@mydomain.com"      "zack.l.harris@mydomain.com"
"google.com"                 "gmail.com"                 
"domain.com"                 "example.com"     
于 2013-10-21T19:57:38.360 回答