2

名前の範囲を単にイニシャルに変更したいのですが、

2 つの名前がc("Ben Franklin", "Millard Fillmore")あり、それらを にサブセット化したいとしc("BF", "MF")ます。ヘルプ ファイルを読みましたが、わかり?gsubません。ここで誰でも私を助けることができますか?

4

3 に答える 3

2

で文字列を分割し" "、関数を各コンポーネントに適用substrし、結果を貼り付けて折りたたむ

> x <- c("Ben Franklin", "Millard Fillmore")
> sapply(strsplit(x, " "), function(x) paste(substr(x, 1, 1), collapse=""))
[1] "BF" "MF"
于 2012-12-04T19:56:32.880 に答える
2

これにより、大文字以外の文字がすべて削除されます。

> 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"
于 2012-12-04T20:24:28.070 に答える
1

gsubだけで

 gsub(pattern='(.)(.*)[[:space:]](.)(.*)','\\1\\3',c("Ben Franklin", "Millard Fillmore"))

 "BF" "MF"
于 2012-12-04T19:57:52.480 に答える