2017-01-25 5 views
5

数字1:8,11:18,21:28などの1000から1000までの数字のシーケンスを作成するにはRを使用したいと思います。明らかにすべてを出すのは面倒ですが、シーケンスが1つ増えて7倍になってから3倍になるので、これを達成するためにどのような機能を使用できるかはわかりません。Rで交互にインクリメントするシーケンスを生成しますか?

私はseq(1, 998, c(1,1,1,1,1,1,1,3))を試しましたが、私が探している結果は得られませんので、何か間違っている必要があります。

答えて

6

これはR.で(あまりにもリサイクル)ベクトル化の完璧なケースですが、それらについてのサイクルで

(1:100)[rep(c(TRUE,FALSE), c(8,2))] 
# [1] 1 2 3 4 5 6 7 8 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27 28 31 32 
#[27] 33 34 35 36 37 38 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 58 61 62 63 64 
#[53] 65 66 67 68 71 72 73 74 75 76 77 78 81 82 83 84 85 86 87 88 91 92 93 94 95 96 
#[79] 97 98 
+8

@akrun - あなたの最初のソリューションはこの1つの直接のコピーのように見えますか? (私の投票ではない、btw) – SymbolixAU

+0

@SymbolixAUはちょうどすべての投稿がダウンワードを取得した理由を尋ねる? –

+1

いいえ、私は誰にも投票していない – SymbolixAU

5
rep(seq(0,990,by=10), each=8) + seq(1,8) 
-1

をお読みください。for(value in c(seq(1,991,10))){vector <- c(vector,seq(value,value+7))}

3

あなたは0 or 9 (mod 10)ある数字を除外したいです。だから、あなたもこれを試すことができます。

n <- 1000 # upper bound 
x <- 1:n 
x <- x[! (x %% 10) %in% c(0,9)] # filter out (0, 9) mod (10) 

head(x,80) 
# [1] 1 2 3 4 5 6 7 8 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27 
# 28 31 32 33 34 35 36 37 38 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 
# 58 61 62 63 64 65 66 67 68 71 72 73 74 75 76 77 78 81 82 83 84 85 
# 86 87 88 91 92 93 94 95 96 97 98 

またはFilterを使用して、単一の行に

は:

Filter(function(x) !((x %% 10) %in% c(0,9)), 1:100) 
# [1] 1 2 3 4 5 6 7 8 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27 28 31 32 33 34 35 36 37 38 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 
# [48] 58 61 62 63 64 65 66 67 68 71 72 73 74 75 76 77 78 81 82 83 84 85 86 87 88 91 92 93 94 95 96 97 98 
関連する問題