名前の範囲を単にイニシャルに変更したいのですが、
2 つの名前がc("Ben Franklin", "Millard Fillmore")
あり、それらを にサブセット化したいとしc("BF", "MF")
ます。ヘルプ ファイルを読みましたが、わかり?gsub
ません。ここで誰でも私を助けることができますか?
で文字列を分割し" "
、関数を各コンポーネントに適用substr
し、結果を貼り付けて折りたたむ
> x <- c("Ben Franklin", "Millard Fillmore")
> sapply(strsplit(x, " "), function(x) paste(substr(x, 1, 1), collapse=""))
[1] "BF" "MF"
これにより、大文字以外の文字がすべて削除されます。
> s <- c("Ben Franklin", "Millard Fillmore")
> gsub("[^A-Z]", "", s)
[1] "BF" "MF"
コメントごとに「Allan McCormick」などの文字列がある場合のより複雑な正規表現を次に示します。
s <- c("Ben Franklin", "Millard Fillmore", "Allen McCormick")
gsub("(.)\\S* *", "\\1", s)
[1] "BF" "MF" "AM"
gsubだけで
gsub(pattern='(.)(.*)[[:space:]](.)(.*)','\\1\\3',c("Ben Franklin", "Millard Fillmore"))
"BF" "MF"