在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)] <- 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中的字符串末尾插入字符,最后一个元素除外的主要内容,如果未能解决你的问题,请参考以下文章