我正在尝试在R中编写一个函数,它将打印[1,100]中的每个第3个数字;这就是我所尝试过的,但这不会产生每三个数字,它会产生每个数字
{{someText | slugifyFilter}}
我错过了什么吗?我们非常感谢您提供的任何帮助!
答案 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