gpt4 book ai didi

r - 按特定值对字符串进行排序

转载 作者:行者123 更新时间:2023-12-01 00:49:17 25 4
gpt4 key购买 nike

我有以下字符串:

str1<-"{a{c}{b{{e}{d}}}}"

另外,我有一个整数列表:
str_d <- ( 1, 2, 2, 4, 4)

列表和字符串之间存在一对一的关系。
它的意思是:
a 1
c 2
b 2
e 4
d 4

我只想按字母顺序对 str1 中具有相同级别的字符进行排序。
这意味着对 c, b (它们具有相同的值 2) 进行排序将产生 b,c
并且对 e, d (它们具有相同的值 4) 进行排序将产生 d,e。

所需的结果将是:
str2<-"{a{b}{c{{d}{e}}}}"

另外 a,b,c,d 和 e 不仅可以是字符,还可以是单词,例如:
str1<-"{NSP{ARD}{BOS{{DUD}{COR}}}}"

我怎样才能做到这一点,将 { 放在他们的位置?

最佳答案

brkts <- gsub("\\w+", "%s", str1)
strings <- regmatches(str1,gregexpr("[^{}]+",str1))[[1]]
fixed <- ave(strings, str_d, FUN=function(x) sort(x))
do.call(sprintf, as.list(c(brkts, fixed)))
[1] "{a{b}{c{{d}{e}}}}"


[1] "{NSP{ARD}{BOS{{COR}{DUD}}}}"

它适用于第一种和第二种情况。我们首先用 gsub 隔离文本并放置 %s反而。稍后将用于 sprintf .接下来我们用 strsplit 分割来隔离字符串。在我们放置在每组括号符号之后的逗号上。然后我们根据给定的排序向量进行排序,并将字符保存在向量中 fixed .最后,我们调用 sprintfbrkts我们在开头创建的变量和已排序的字符串。

数据
str_d <- c(1, 2, 2, 4, 4)
str1<-"{a{c}{b{{e}{d}}}}"
str1<-"{NSP{ARD}{BOS{{DUD}{COR}}}}"

关于r - 按特定值对字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32338087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com