URL の文字ベクトルから始めます。目標は、会社の名前のみで終わることです。つまり、以下の例では、のみ"test"
の列を意味します。"example"
"sample"
urls <- c("http://grand.test.com/", "https://example.com/",
"http://.big.time.sample.com/")
およびそれに続く可能性のあるものはすべて削除し".com"
、最初の部分を保持します。
urls <- sapply(strsplit(urls, split="(?<=.)(?=\\.com)", perl=T), "[", 1)
urls
# [1] "http://grand.test" "https://example" "http://.big.time.sample"
次のステップは、チェーン呼び出しでhttp://
andの部分を削除することです。https://
gsub()
urls <- gsub("^http://", "", gsub("^https://", "", urls))
urls
# [1] "grand.test" "example" ".big.time.sample"
しかし、ここで助けが必要です。URL の 1 番目と 3 番目の文字列で会社名の前にある複数のピリオド (ドット) を処理するにはどうすればよいですか? たとえば、次の呼び出しでは、"example"
文字列にピリオドが残っていないため、2 番目の文字列に対して NA が返されます。または、最初の部分だけを保持すると、会社名が失われます。
urls <- sapply(strsplit(urls, split = "\\."), "[", 2)
urls
# [1] "test" NA "big"
urls <- sapply(strsplit(urls, split = "\\."), "[", 1)
urls
# [1] "grand" "example" ""
おそらく、ifelse()
残りのピリオドの数をカウントし、複数のピリオドがある場合にのみ strsplit を使用する呼び出しでしょうか? また、会社名の前に 2 つ以上のピリオドがある可能性があることに注意してください。私の問題を解決するかもしれないルックアラウンドを行う方法がわかりません。しかし、これはしませんでした
strsplit(urls, split="(?=\\.)", perl=T)
ご提案ありがとうございます。