【问题标题】:Insert character at end of string in R, except for the last element在R中的字符串末尾插入字符,最后一个元素除外
【发布时间】:2015-01-19 15:31:05
【问题描述】:

我查看了但未能找到如何在 R 中的字符串向量中的每个元素的末尾添加一个字符的答案,除了最后一个...

考虑以下几点:

data <- c("cat", "dog", "mouse", "lion")

我想应用一个在每个元素末尾粘贴“,”的函数,结果是:

[1] "cat,", "dog,", "mouse,", "lion"

应用函数?循环?任何帮助表示赞赏...

【问题讨论】:

  • paste0(data, ",")。你是不是故意在lion后面加,
  • 我认为你需要data[-length(data)] &lt;- paste0(data[-length(data)], ',') 或`strsplit(paste(data, collapse=', '), ' ')[[1]]
  • 有意地,我正在做的是在 sql 中破解一个否定的选择语句,所以最后一项不会有逗号@DavidArenburg
  • 你的标题在这里严重误导。
  • 完全正确@SerbanTanasa - 已被编辑...

标签: r


【解决方案1】:

您可以通过以下几种方式做到这一点:

  1. 对不带最后一个元素的“数据”进行子集化,粘贴,,并将其分配给原始数据(不带最后一个元素)

    data[-length(data)] <- paste0(data[-length(data)], ',')
    
  2. strsplit 折叠为字符串后使用

    strsplit(paste(data, collapse=', '), ' ')[[1]]     
    

【讨论】:

  • 你能解释一下这个[[1]]是什么意思,以及它如何能够在不折叠的情况下离开最后一个元素。
  • @ambrish strsplit 返回结果列表,因此[[1]] 正在提取列表中的第一项(在本例中是唯一一项)。例如,查看strsplit(c("abc 123", "bcd 456"), " ") 的输出。
【解决方案2】:

我知道这是一个老问题,但由于我想人们(像我一样)仍然在这里结束,他们可能想要考虑由更新但相当常见的软件包提供的简单解决方案。它们提供的选项略有不同。

选项 1:Knitr

data <- c("cat", "dog", "mouse", "lion")
knitr::combine_words(data, before = '`')

# `cat`, `dog`, `mouse`, and `lion`

选项 2:胶水

data <- c("cat", "dog", "mouse", "lion")
glue::glue_collapse(x = data, ", ", last = " and ")

# cat, dog, mouse and lion

【讨论】:

  • 我实际上是在这里寻找您的第二个选项,非常感谢:) 我认为您的建议不能回答这个问题。
  • @Moohan 哦,你是对的!经过一段时间寻找解决方案后,可能将其发布在错误的问题下......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-04
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多