【问题标题】:R - Change the order of characters in a listR - 更改列表中字符的顺序
【发布时间】:2018-02-02 18:26:27
【问题描述】:

你好,我有这份清单

    LIST<-list(list("DC,MD,MA,Washigton,Baltimore,Boston,France,Turkey,China"),
           list("DC,MD,Washington,Baltimore,France,Turkey"),
           list("DC,Washington,France,Turkey,China")

我想按照这个逻辑改变子列表的字符串顺序:

    LIST<-list(list("DC,Washington,MD,Baltimore,MA,Boston,France,Turkey,China"),
               list("x1,y1,x2,y2,z1,z2,z3"),
               list("x1,y1,z1,z2,z3"))

请注意,x 和 y 的计数相同,最多可以为 3。Z 没有计数限制。我当然不希望手动更改每个子列表的顺序,而是使用自动方式。

【问题讨论】:

    标签: r string list


    【解决方案1】:
    library(magrittr)
    fun=function(string){
     lapply(strsplit(string,","),function(x)sub("([a-z])([0-9])","\\2\\1",x)%>%
        sort()%>%sub("([0-9])([a-z])","\\2\\1",.)%>%paste(collapse=","))
    }
    
    rapply(LIST,fun,how="list")
    

    改版后:

     fun=function(string,NO){
      lapply(strsplit(string,","),function(x) 
        paste(c(by(x, c(s<-rep(1:NO,2),rep(0,length(x)-length(s)))
                   ,paste0,collapse=",")),collapse=", "))
    }
    rapply(LIST,fun,how="list",NO=3)
    

    【讨论】:

    • 其实这个更准确:LIST
    • 你需要什么?你想怎么安排?
    • 州应该离它的城市很近
    • 抱歉,我不了解美国的州和城市。您必须提供一种客观的方式将其翻译成代码。多少个州多少个城市?
    • 它们之间的关系就像我最初的帖子一样:如果x1,x2,x3是州,那么对应的城市是y1,y2,y3。可以有 1 到 3 个 x 和 y,并且 x 总是和 y 一样多
    猜你喜欢
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 2011-07-24
    • 2021-08-19
    • 2021-10-09
    • 1970-01-01
    相关资源
    最近更新 更多