web-dev-qa-db-ja.com

R:単語の文字列の最初のn文字を表示する方法

私は次の文字列を持っています:

 Getty <- "Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty, and dedicated to the proposition that all  men are created equal."

最初の10文字を表示したい。そこで、文字列を個々の文字に分割することから始めました。

 split <- strsplit(Getty, split="")
 split 

この時点で、すべての個々のキャラクターを取得します。次に、最初の10文字の部分文字列を作成します。

 first.10 <- substr(split, start=1, stop=10)
 first.10

そしてここに出力があります:

 "c(\"F\", \"o\""

なぜこれが印刷されるのか分かりませんか?私はそれが次のようなものを印刷するだけだと思いました:

 "F" "o" "u" "r" "s" 

上記のものを印刷するようにコードを変更する方法はありますか?

みんなありがとう!

7
mapleleaf

他の回答では、例のようにスペースが削除されなかったため、次のように追加します。

strsplit(substr(gsub("\\s+", "", Getty), 1, 10), '')[[1]]
#[1] "F" "o" "u" "r" "s" "c" "o" "r" "e" "a"
3

コードを裏返すと、必要なものが得られます。

Getty <- "Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty, and dedicated to the proposition that all  men are created equal."


first.10 <- substr(Getty, start=1, stop=10)
first.10
"Four score"
split <- strsplit(first.10, split="")
split 
"F" "o" "u" "r" " " "s" "c" "o" "r" "e"
4
phiver

"c(\"F\", \"o\""を取得した理由は、strsplitの出力がlistであるためです。最初のlist要素を抽出することで、vectorlistに変換できます。 [[1]]headを使用して、最初の10文字を取得します。

head(strsplit(Getty, '')[[1]], 10)

更新

スペースなしで文字を抽出したいだけの場合は、

library(stringr)
head(str_extract_all(Getty, '[^ ]')[[1]],10)
#[1] "F" "o" "u" "r" "s" "c" "o" "r" "e" "a"
2
akrun