gpt4 book ai didi

r - 如何在R中按顺序获取下一个数字

转载 作者:行者123 更新时间:2023-12-04 19:53:30 24 4
gpt4 key购买 nike

我需要自动化获取给定序列中的下一个数字的过程。

我们可以制作一个接受两个输入的函数吗

  • 数字向量(例如 3,7,13,21)
  • 下一个数字是多少
    seqNext <- function(sequ, next) {
    ..
    }

    seqNext( c(3,7,13,21), 3)
    # 31 43 57
    seqNext( c(37,26,17,10), 1)
    # 5
  • 最佳答案

    靠数学的力量!

    x1 <- c(3,7,13,21)
    dat <- data.frame(x=seq_along(x1), y=x1)

    predict(lm(y ~ poly(x, 2), data=dat), newdata=list(x=5:15))
    # 1 2 3 4 5 6 7 8 9 10 11
    # 31 43 57 73 91 111 133 157 183 211 241

    当处理改变其符号的连续差异时,输出值的模式最终从减少切换到增加:
    x2 <- c(37,26,17,10)

    dat <- data.frame(x=seq_along(x2), y=x2)
    predict(lm(y ~ poly(x,2), data=dat), newdata=list(x=1:10))

    # 1 2 3 4 5 6 7 8 9 10
    #37 26 17 10 5 2 1 2 5 10
    -(11) -(9) -(7) -(5) -(3) -(1) -(-1) -(-3) -(-5)
    -2 -2 -2 -2 -2 -2 -2 -2

    作为一个函数:
    seqNext <- function(x,n) {
    L <- length(x)
    dat <- data.frame(x=seq_along(x), y=x)
    unname(
    predict(lm(y ~ poly(x, 2), data=dat), newdata=list(x=seq(L+1,L+n)))
    )
    }

    seqNext(x1,5)
    #[1] 31 43 57 73 91
    seqNext(x2,5)
    #[1] 5 2 1 2 5

    这也很容易扩展到模式可能是 n 的情况。订单深,例如:
    x3 <- c(100, 75, 45, 5, -50)
    diff(x3)
    #[1] -25 -30 -40 -55
    diff(diff(x3))
    #[1] -5 -10 -15
    diff(diff(diff(x3)))
    #[1] -5 -5

    seqNext <- function(x,n,degree=2) {
    L <- length(x)
    dat <- data.frame(x=seq_along(x), y=x)
    unname(
    predict(lm(y ~ poly(x, degree), data=dat), newdata=list(x=seq(L+1,L+n)))
    )
    }

    seqNext(x3,n=5,deg=3)
    #[1] -125 -225 -355 -520 -725

    关于r - 如何在R中按顺序获取下一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33930689/

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