如何编写将在[1,100]中打印每三个数字或第n个数字的R函数或循环?

时间:2015-07-25 02:49:44

标签: r

我正在尝试在R中编写一个函数,它将打印[1,100]中的每个第3个数字;这就是我所尝试过的,但这不会产生每三个数字,它会产生每个数字

 {{someText | slugifyFilter}}

我错过了什么吗?我们非常感谢您提供的任何帮助!

4 个答案:

答案 0 :(得分:5)

使用模运算符(%%)从1:100获取每个第n个值,如下所示:

nth <- function(x,n){
  x[x%%n==0]
}

例如:

x <- 1:100
nth(x,7)
[1]  7 14 21 28 35 42 49 56 63 70 77 84 91 98

答案 1 :(得分:4)

使用[索引和短矢量的回收:

seq(100)[c(F,F,T)]
## [1]  3  6  9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99

答案 2 :(得分:2)

已经发布了优秀的答案;这只是另一个简单的选择:

start <- 1 # defines the initial number you want to select
step <- 3 # difference between subsequent numbers 
seq(start, 100, by=step)
#[1]   1   4   7  10  13  16  19  22  25  28  31  34  37  40  43  46  49  52  55  58  61  64  67  70  73  76  79  82  85  88  91  94  97 100

答案 3 :(得分:1)

将Matthew的解决方案包含在一般的第n个函数中:

nth <- function(x, n) x[c(rep(FALSE, n-1), TRUE)]

nth(1:100, 5)

# [1]   5  10  15  20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95 100

甚至使用运营商风格:

`%nth%` <- function(x, n) x[c(rep(FALSE, n-1), TRUE)]

seq(100) %nth% 5