1

私は R 初心者で、プログラミングの宿題に問題があります。

入力は詩です:

poem <- c(
  "Am Tag, an dem das L verschwand,", 
  "da war die Luft voll Klagen.",
  "Den Dichtern, ach, verschlug es glatt",
  "ihr Singen und ihr Sagen.",
  "Nun gut. Sie haben sich gefasst.",
  "Man sieht sie wieder schreiben.",
  "Jedoch:",
  "Solang das L nicht wiederkehrt,",
  "muß alles Flickwerk beiben.")

ここで、すべての大文字を抽出し、それらを 1 つの単語に結合する必要があります。私は次のコードでこれをやっています:

poem_cap <- str_extract_all(poem, "[[:upper:]]")

次に、リストから外しpoem_capます:

one_word <- unlist(poem_cap)
one_word

次の論理的なステップは適用することstr_cです:

one_word2 <- str_c(one_word, sep="")

しかし、R は別々の文字を出し続けます。の出力をコピーし、one_word2カンマで区切っstr_cて出力に適用すると、次のように機能します。

one_word2 <- str_c("A", "T", "L", "L", "K", "D", "D", "S", "S", "N", "S", "M", "J", "S", "L", "F", sep="")
one_word

なぜこれが起こるのですか?私が犯している間違いはありますか?one_word2自分が使えるものに変身するにはどうすればいいstr_cですか?

4

1 に答える 1

4

ベースRアプローチでgsubは、ワンライナーで使用して大文字のみを保持し、それらを貼り付けることができます(@David Arenburgの下線が引かれているように、折りたたんで):

paste(gsub('[^A-Z]','',poem), collapse='')
#[1] "ATLLKDDSSNSMJSLF"
于 2015-05-20T08:51:53.970 に答える