2017-05-13 3 views
2

私は小さな問題で苦労しています。私が得たいのは、dim = 1の配列がfor-loopの助けでいっぱいになることです。for-loopの配列を異なる長さのシーケンスで塗りつぶす

最小-例(それは働いていない!):

Numbers <- seq(1,5) 
Result <- array(NA) 

for(n in Numbers){ 
    Result[n] <- seq(n,5) 
    # The Result array should be like this:   
    # (1, 2, 3, 4, 5, 2, 3, 4, 5, 3, 4, 5, 4, 5, 5) 
} 

私は2つの問題があると思います:

  • Result[n]が同じ長さ
  • インデックスnではありません。 Result[n]が間違っています。実際には、それは動的でなければならないので、毎回新しく変更されますn

あなたは私を助けることができますか? ありがとうございました!

答えて

1

我々はsapply

unlist(sapply(Numbers, function(x) seq(x, 5))) 
#[1] 1 2 3 4 5 2 3 4 5 3 4 5 4 5 5 

それともforループsequencerepを使用して

Result <- c() 
for(n in Numbers){ 
Result <- c(Result, seq(n, 5)) 
} 
Result 
#[1] 1 2 3 4 5 2 3 4 5 3 4 5 4 5 5 
+1

素晴らしい、ありがとう! :-) – Frosi

1

使用してこれを行うことができます。

n <- 5 
sequence(n:1) + rep(0:(n-1), n:1) 
# [1] 1 2 3 4 5 2 3 4 5 3 4 5 4 5 5 

また、「特大」マトリックスを作成し、下の三角形を選択することがあります。

m <- matrix(c(NA, 1:n), nrow = n + 1, ncol = n + 1) 
m[lower.tri(m)] 
# [1] 1 2 3 4 5 2 3 4 5 3 4 5 4 5 5 
+0

ありがとう!どちらの答えもとても素敵です! :-) – Frosi

関連する問題