gpt4 book ai didi

r - 向量中特定序列的数量

转载 作者:行者123 更新时间:2023-12-04 05:37:27 25 4
gpt4 key购买 nike

给定两个向量:'pattern' 和 'trail'。问题:“轨迹”中“模式”出现的频率如何?
例子:

pattern <- c(1,2,3)

trail <- c(7,1,4,2,9,2,3)


正确解:2(即 1,2,3 和 1,2,3;“2”在中间出现两次)。
我试过了:
getPerformance <- function(pattern,trail) {
tmp <- 0
for(i in 1:length(pattern)) {
for(j in 1:length(trail)) {
if(pattern[i]==trail[j]) {

if(i<length(pattern)) {
sum(pattern[i:length(pattern)])
}
tmp <- 1 * getPerformance(pattern[i:length(pattern)],trail[j:length(trail)])
}
}
}
return(tmp)
}
但是这个函数不会终止。当然,欢迎使用非递归解决方案。谢谢你的帮助!

最佳答案

n_subseq = function(trail, pattern) {
# generate all subsets of the elements of `trail` in `pattern`
# of `length(pattern)`
# preserving order (as combn does)
# that are all equal to `pattern`
sum(combn(
x = trail[trail %in% pattern],
m = length(pattern),
FUN = function(x) all(x == pattern)
))
}

n_subseq(trail = c(7, 1, 4, 2, 9, 2, 3), pattern = 1:3)
# [1] 2

n_subseq(c(1, 2, 2, 3, 3), 1:3)
# [1] 4

关于r - 向量中特定序列的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55009592/

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