RegEx 和 stringr 包

RegEx and stringr package

我是一个 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.")

现在我需要提取所有大写字母并将它们组合成一个单词。 我正在使用以下代码执行此操作:

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

Base R 方法,您可以简单地在一行中使用 gsub 以仅保留大写字母并粘贴它们(折叠,如@David Arenburg 下划线所示):

paste(gsub('[^A-Z]','',poem), collapse='')
#[1] "ATLLKDDSSNSMJSLF"