在一个字符串中交换最后两个数字

3
我有一组数字,希望交换最后两个数字,所以我的数字1-10-250-750将变成1-10-750-250。显然,每次这个数字都会改变,所以我想用sub/gsub来完成这个操作,但不确定应该如何实现,或者也许可以使用第三个'-'之前的数字与之后的数字进行交换。
2个回答

4
这里有一个使用正则表达式和替换模式的解决方案:
x <- c("1-10-250-750", "1-10-333-444")

sub('(\\d+)-(\\d+)$', '\\2-\\1', x)
# [1] "1-10-750-250" "1-10-444-333"

它匹配最后两组数字,并在替换模式中交换它们。

有没有办法以数据框的格式使用和返回这个? - Joe

2

按照"-"进行拆分,颠倒最后两个数字,并将它们全部粘贴回来:

x <- c("1-10-250-750", "1-10-333-444")

sapply(strsplit(x, split = "-", fixed = TRUE), function(i){
  paste(c(head(i, 2), rev(tail(i, 2))), collapse = "-")
})
# [1] "1-10-750-250" "1-10-444-333"

有没有办法将其转换为数据框格式? - Joe
@Joe 是的,df$newColumn <- sapply(strsplit(df$x, ... - zx8754

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接