我有這些序列:
1,2,3,13,14,15,25,26,271,2,3,4,14,15,16,17,27,28,29,30,40,41,42,43
它們的構造如下:
- 我選擇一個數字M(例如:3)和一個起始數字F(例如:1);
- 我把這個數的 2 的冪取為 M^2 (3*3=9) 就是序列的長度;
- 序列中的數字是等差數列,以“GI”為增量(例如:1)但在M 1、2M 1等中的數字,位置為前一個數字 “P2I”的增量(例如:10 ) [(F=)1, (1 GI=)2, (2 GI=)3, (3 P2I=)13, (13 GI=)14, ...]
我如何制作一個列印這些序列的函式?
謝謝
uj5u.com熱心網友回復:
使用sequence功能:
fSeq <- function(M, F, GI, P21) {
sequence(rep(M, M), seq(F, by = (M - 1)*GI P21, length.out = M), GI)
}
fSeq(3, 1, 1, 10)
#> [1] 1 2 3 13 14 15 25 26 27
fSeq(4, 1, 1, 10)
#> [1] 1 2 3 4 14 15 16 17 27 28 29 30 40 41 42 43
使用row和col:
fSeq2 <- function(M, F, GI, P21) {
m <- matrix(F - GI*M - P21, nrow = M, ncol = M)
return(c(m row(m)*GI col(m)*(GI*(M - 1) P21)))
}
fSeq2(3, 1, 1, 10)
#> [1] 1 2 3 13 14 15 25 26 27
fSeq2(4, 1, 1, 10)
#> [1] 1 2 3 4 14 15 16 17 27 28 29 30 40 41 42 43
與cumsum:
fSeq3 <- function(M, F, GI, P21) {
cumsum(c(F - P21 GI, rep(GI, M^2 - 1)) c(P21 - GI, rep(0, M - 1)))
}
fSeq3(3, 1, 1, 10)
#> [1] 1 2 3 13 14 15 25 26 27
fSeq3(4, 1, 1, 10)
#> [1] 1 2 3 4 14 15 16 17 27 28 29 30 40 41 42 43
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383769.html
