【问题标题】:R get last element from str_split [duplicate]R从str_split中获取最后一个元素[重复]
【发布时间】:2017-03-22 05:36:10
【问题描述】:

我有一个 R 字符串列表,我想获取每个字符串的最后一个元素

require(stringr)

string_thing <- "I_AM_STRING"
Split <- str_split(string_thing, "_")
Split[[1]][length(Split[[1]])]

但是如何使用字符串列表来做到这一点?

require(stringr)

string_thing <- c("I_AM_STRING", "I_AM_ALSO_STRING_THING")
Split <- str_split(string_thing, "_")

#desired result
answer <- c("STRING", "THING")

谢谢

【问题讨论】:

  • 我建议使用gsub(".*_(.*)", "\\1", string_thing)gsub(".*_", "", string_thing) 之类的东西,而不是拆分字符串然后提取最后一段......
  • 如前所述,拆分是不必要的。您想提取字符串的一部分。您也可以使用str_extract。试试str_extract(string_thing, "(?&lt;=_)[^_]*$"),这意味着:“提取与下划线不同的所有内容,该下划线从下划线开始并到达字符串的末尾”。
  • 这个问题可以有自己的答案。这是一个具体的例子,这个具体的例子可以有一个具体的答案。问题是关于字符串的问题,问题的答案是针对列表的,没有提供字符串示例。这种字符串问题可以用 stringr 轻松解决: word(string_thing[2], 4:5, sep = ("_")) result: "string" "thing".
  • 现在回答为时已晚,但如果其他人确实想使用最后的下划线拆分字符串,这应该为你做:_(?=[^_]+$)跨度>

标签: r regex stringr


【解决方案1】:

正如您对问题的评论所暗示的,这适用于gsub

gsub("^.*_", "", string_thing)

我建议您也注意以下情况。

string_thing <- c("I_AM_STRING", "I_AM_ALSO_STRING_THING", "AM I ONE", "STRING_")
gsub("^.*_", "", string_thing)
[1] "STRING"   "THING"    "AM I ONE" ""  

【讨论】:

    【解决方案2】:

    我们可以使用sapply 循环遍历list 并使用tail 获取最后的“n”个元素

    sapply(Split, tail, 1)
    #[1] "STRING" "STRING"
    

    如果只有一个字符串,请使用[[list 转换为vector 并使用tail 获取最后一个元素

    tail(Split[[1]], 1)
    

    【讨论】:

      猜你喜欢
      • 2018-02-22
      • 1970-01-01
      • 2014-03-11
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多