如何在R

时间:2017-03-01 19:27:25

标签: r

我需要4个函数来生成一些数字(每个)

  1. 第一个函数从n奇数除了5,15,25等产生序列...

    {p>示例n=2:1,1,3,7,7,9,9,11,11,13,13,17,17 ......

  2. 第二个函数从n偶数生成序列,除了10,20,30等...

    示例n=2:2,2,4,6,6,8,8,12,12,14,14,16,16 ......

  3. 第三个函数从5乘10的n个数字生成序列

    示例n=2:5,5,15,15,25,25,......

  4. 第四个函数从{10}乘以n个数字生成序列

    示例n=2:10,10,20,20,30,30 ......

  5. 每个函数都必须将向量1: Nn作为输入。

    例如,

    f1(1:10, 3)
    > 1, 1, 1, 3, 3, 3, 7, 7, 7, 9
    
    f2(1:5, 10)
    > 2, 2, 2, 2, 2
    
    f3(1:15, 5)
    > 5, 5, 5, 5, 5, 15, 15, 15, 15, 15, 25, 25, 25, 25, 25
    
    f4(1:2, 1)
    > 10, 20
    

    我对前两个函数有一些决定,但我不知道如何排除一些数字:

    f1 <- function(x) 2*((x-1) %/% 10) + 1 # goes 1, 3, 5, etc for n = 10
    f2 <- function(x) 2*((x-1) %/% 10 + 1) # goes 2, 4, 6, etc for n = 10
    

1 个答案:

答案 0 :(得分:0)

为什么不使用seqrep

n = 25
nrep = 2 # number of repetitions

by5 <- sort(rep(seq(5, n, by = 10), nrep )) # numbers from 5 by 10
by5 

by10 <- sort(rep(seq(10, n, by = 10), nrep )) # numbers from 10 by 10 
by10

odd <- sort(rep(seq(1, n, by = 2), nrep )) # odd number
odd[!odd %in% by5] # remove all the by5 values

even <- sort(rep(seq(2, n, by = 2), nrep )) # Even numbers
even[!even %in% by10] # remove all the by 10 values

输出

> [1]  5  5 15 15 25 25
> [1] 10 10 20 20
> [1]  1  1  3  3  7  7  9  9 11 11 13 13 17 17 19 19 21 21 23 23
> [1]  2  2  4  4  6  6  8  8 12 12 14 14 16 16 18 18 22 22 24 24.