4

私は使用するのが初めてで、リストを適切にフォーマットするためRに使用する際に問題があります。gsub私は2つの交換を行う必要があります。

  • @の後にすべてを置き換える最初の置換@mydomain.com
  • www.すべてを空の値に置き換える 2 番目の置換。

アップデート

私は現在gsub2回実行しており、動作するコードで修正しています。見たことのない 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)

アップデート

しかし、可能であれば両方を同時に置き換える1 つのインスタンスgsubとして実行したいと考えています。

4

1 に答える 1

4

私がこれを行った1つの方法は、gsub関数を一緒にカスケードすることです。

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

old valuesもう 1 つの解決策は、とのベクトルを作成することです。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"     
于 2013-10-21T19:57:38.360 に答える