gpt4 book ai didi

r - 将单词拆分为长度组合

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

我正在 R 中寻找一个函数,它可以给定一个整数,让我可以将一个单词拆分为该长度组合,但具有滚动效果。

例如 function("stackoverflow", 4) 会渲染:

c("stac", "tack", "acko", "ckov", "kove", "over", "verf", "rflo", "flow")

你们知道那个函数是否存在或者我必须创建它吗?

最佳答案

## install.packages("zoo")

x <- unlist(strsplit("stackoverflow",""))
zoo::rollapply(x,width=4,FUN = paste0,collapse="")
# [1] "stac" "tack" "acko" "ckov" "kove" "over" "verf" "erfl" "rflo" "flow"

一个函数?

foo <- function(input, h) {
x <- unlist(strsplit(input,""))
zoo::rollapply(x,width=h,FUN = paste0,collapse="")
}

foo("stackoverflow", 4)
# [1] "stac" "tack" "acko" "ckov" "kove" "over" "verf" "erfl" "rflo" "flow"

基准

考虑使用 substring() 的基本 R 方法:

foo1 <- function(input, h) substring(input, seq_len(nchar(input)-h+1),h:nchar(input))

让我们生成一个很长的玩具字符串:

x <- paste0(rep("a",100000), collapse="")

system.time(foo(x,4))
# user system elapsed
# 2.280 0.004 2.288

system.time(foo1(x,4))
# user system elapsed
# 10.492 0.000 10.509

所以,看似矢量化的函数 substring() 根本就没有高效,这是一个有趣的观察结果!

关于r - 将单词拆分为长度组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38717379/

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