连接组中的矢量元素
发布时间:2020-12-15 04:09:52 所属栏目:Java 来源:网络整理
导读:将list1转换为list2以及list2转换为list1的最优雅方式是什么? list1- c('a','b','c','d','e','f','g','h','i')list2- c('abc','def','ghi') 即:以三个为一组的连续元素. 感谢:D 解决方法 设list1 - letters [1:10](显示当向量的长度不是3的倍数时它是如何
将list1转换为list2以及list2转换为list1的最优雅方式是什么?
list1<- c('a','b','c','d','e','f','g','h','i') list2<- c('abc','def','ghi') 即:以三个为一组的连续元素. 感谢:D 解决方法
设list1< - letters [1:10](显示当向量的长度不是3的倍数时它是如何工作的).然后,试试这个: list1到list2
# method 1 (seems to be the fastest so far,# my suspicions about loop being slower were wrong) list2 <- sapply(split(list1,(seq_along(list1)-1) %/% 3),paste,collapse = "") # alternatively as @flodel mentions list2 <- tapply(list1,(seq_along(list1)-1) %/% 3,collapse = "") tapply版本在与sapply split相似的时间运行(基准测试未显示). 更进一步,在this post中使用@JoshOBrien的想法 # method 2 pattern <- "(?<=[[:alnum:]]{3})(?=[[:alnum:]])" strsplit(paste(list1,collapse=""),pattern,perl=TRUE)[[1]] # [1] "abc" "def" "ghi" "j" 如果你想把最后一部分连接到最后一个(这里是j到ghi),那么,做: pattern <- "(?<=[[:alnum:]]{3})(?=[[:alnum:]]{3})" strsplit(paste(list1,perl=TRUE)[[1]] # [1] "abc" "def" "ghij" list2到list1 unlist(strsplit(list2,""),use.names=FALSE) # [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" 这是方法1,方法2和eddi的基准测试: 数据: list1 <- sample(letters,1e5,replace=TRUE) 功能: arun <- function() { pattern <- "(?<=[[:alnum:]]{3})(?=[[:alnum:]])" strsplit(paste(list1,perl=TRUE)[[1]] } arun2 <- function() { unname(sapply(split(list1,collapse = "")) } eddi <- function() { substring(paste(list1,collapse = ""),seq(1,length(list1),3),pmin(seq(3,length(list1)+2,length(list1))) } 基准测试: require(microbenchmark) microbenchmark(t1 <- arun(),t2 <- eddi(),t3 <- arun2(),times=10) identical(t1,t2) # TRUE identical(t1,t3) # TRUE # Unit: milliseconds # expr min lq median uq max neval # t1 <- arun() 3352.9867 3400.8627 3512.7037 3585.6499 3635.2182 10 # t2 <- eddi() 3302.0925 3318.4184 3356.2109 3409.9728 3487.7220 10 # t3 <- arun2() 474.9235 494.7407 539.4406 641.2605 907.9072 10 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java中的持久阻塞队列?
- 他们的Java SDK中的AmazonDynamoDBClient和DynamoDB类之间的
- odoo 在"动作"("Action")菜单中添加子菜单
- java – 为什么@SafeVarags不能应用于最终类中的实例方法?
- java – 在Gradle环境中的JUnit测试中访问文件
- java – LinkedHashMap vs HashMap,LinkedHashSet vs HashS
- java – 寻找快速,紧凑,可流式,多语言,强类型的序列化格式
- 为什么Java有这么多版本与C#不同?
- 具有过滤条件工作流程的Java 8流
- Java实现给图片添加图片水印,文字水印及马赛克的方法示例