大佬教程收集整理的这篇文章主要介绍了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,请注明来意。