在R中的字符串末尾插入字符,最后一个元素除外

Posted

技术标签:

【中文标题】在R中的字符串末尾插入字符,最后一个元素除外【英文标题】:Insert character at end of string in R, except for the last element 【发布时间】: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 - 已被编辑... 【参考方案1】:

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

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

    data[-length(data)] <- paste0(data[-length(data)], ',')
    

    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 哦,你是对的!经过一段时间寻找解决方案后,可能将其发布在错误的问题下......

以上是关于在R中的字符串末尾插入字符,最后一个元素除外的主要内容,如果未能解决你的问题,请参考以下文章

在 std::string 末尾附近插入换行符 [重复]

从R中的列名末尾删除不定长度括号中的字符

2020.2.21一些python总结

python常用库函数 - 备忘

python列表常用的操作

jQuery .each() - 识别最后一项