程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了R 通过匹配第一个字符自定义字符向量排序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决R 通过匹配第一个字符自定义字符向量排序?

开发过程中遇到R 通过匹配第一个字符自定义字符向量排序的问题如何解决?下面主要结合日常开发的经验,给出你关于R 通过匹配第一个字符自定义字符向量排序的解决方法建议,希望对你解决R 通过匹配第一个字符自定义字符向量排序有所启发或帮助;

我正在尝试在 R 中对向量进行排序。

这是向量的示例:

test = c("Xpsomethingelse","3qsometext","22qsomeothertext")

简单的排序结果:

> sort(test)
[1] "22qsomeothertext" "3qsometext"       "Xpsomethingelse" 

但是我想根据每个字符串的第一个/第二个字符按自定义顺序排序。我创建了另一个代表应该遵循的顺序的向量

order_custom = c("21","18","13","X","Y","1","2","3","4","5","6","7","8","9","10","11","12","14","15","16","17","19","20","22")

我想到了

test[order(match(test,order_custom))]

但这仅匹配完整的字符串,而我正在寻找与字符串开头的匹配项。 'p' 或 'q' 字符之前的所有内容都应虑在内。我认为正则表达式中的匹配应该是 [0-9,X,Y]{1,2} 。但我不知道如何根据这种类型的匹配进行排序。

最终结果应该是这样的

[1] "Xpsomethingelse","22qsomeothertext"

解决方法

您可以使用 sub 删除 p 或 q 以及之后的所有内容,然后使用 @H_359_7@match 和 order

test[order(match(sub("[pq].*","",test),order_custom))]
#[1] "Xpsomethingelse"  "3qsometext"       "22qsomeothertext"
,

您可以使用提供正则表达式的原始代码来匹配“p”或“q”之前的任何内容:

UploadtoS3(String bucketName,IFormFile file,String fileName)
{
    System.IO.Stream MyStream = file.openReadStream();
            
    PutObjectrequest request = new PutObjectrequest
    {
       BucketName = bucketName,Key = filename,InputStream = MyStream,ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"                    
    };

    PutObjectResponse response = await _client.PutObjectAsync(request);
}

由 reprex package (v2.0.0) 于 2021 年 7 月 15 日创建

,

这是按 h3 的等级排序的直观解决方案。

library(data.tablE)
test = c("22qsomeothertext","3qsometext","Xpsomethingelse")
order_custom = c("21","18","13","X","Y","1","2","3","4","5","6","7","8","9","10","11","12","14","15","16","17","19","20","22")

dt <- data.table(test)
dt[,`:=`(h1 = substr(test,1,1),h2 = substr(test,2)) ]

dt[,h3 := fcase(h1 %in% order_custom & !(h2 %in% order_custom),h1,h1 %in% order_custom & (h1 %in% order_custom),h2,default = NA)]

dt[,rank := match(h3,order_custom)][]
#>                test h1 h2 h3 rank
#> 1: 22qsomeothertext  2 22 22   24
#> 2:       3qsometext  3 3q  3    8
#> 3:  Xpsomethingelse  X Xp  X    4

desired_String <-  dt[order(rank),test]

由 reprex package (v2.0.0) 于 2021 年 7 月 15 日创建

大佬总结

以上是大佬教程为你收集整理的R 通过匹配第一个字符自定义字符向量排序全部内容,希望文章能够帮你解决R 通过匹配第一个字符自定义字符向量排序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。