2017-02-05 12 views
0

私はRにはとても新しく、seq()とリストを使ってループを実行する際にいくつか問題があります。私はSOでQnAを検索していますが、これと同じ問題を見つけなければなりません。これに重複したQnAがある場合はお詫び申し上げます。 私はnumberのシーケンスを生成する方法とlistを使って生成する方法を知っていますが、各ループのシーケンスのリストを生成できるかどうかは疑問です。ループ内のseq()のリストを生成することは可能ですか?

これは私が両方のシーケンスおよびリスト機能を使用してみてください、私は、メッセージのどちらか得続ける私のコード

J <- seq(50,200,50) # (I actually wanted to use 1: J to generate a sequence of each combinations . i.e: 1:50, 1:100 etc) 

K <- seq(10,100,10) #(same as the above) 

set.seed(1234) 

for (i in J) { 

    for (j in K){ 
     f <- rnorm(i + 1) # the f value I would like it to be generate in terms of list, since the j have 4 sequence value, if possible, could it adhere to that? 

    } 

} 

の例である:

if print(i) 

が出力

[1]1 

. 
. 
. 

[1]50 

警告メッセージ:

1において

:(配列(50、200、50)):最初のため

を使用する(iは1:リスト(配列(50,200,50))) 数式6つの要素を有する

エラー:リスト(配列(50、200、50)):NA/NaNの引数私が知っているかもしれ

、このようなループの組み合わせを行うことができるかどうか?これで私を導くことができますか?どうもありがとうございました。

+0

私はあなたの提案を試みましたが、[1] .. [300]の値があります。私は実際に[1] .. [50]からシミュレーションループを実行して、次のループ[1]それはseq(50,200,50)に従う。私はそれを1で1回する必要があるのでしょうか? – yannia

答えて

0

あなたが尋ねていることはまだ分かりませんが、これはあなたが探しているものですか?あなたが行列のリストのリスト(J)(K)をしたい2番目の質問にコメント

J <- seq(50,200,50) 
l1 <- vector(length = length(J), mode = "list") 
for (i in seq_along(J)){ # you know of seq_along() right? 
    l1[[i]] = rnorm(J[i]) 
} 

としてこれを投稿することが困難であった:良い習慣ではありませんでした<<-ノートの帽子を行ってください、しかし今のところ、これは私が思いつくことができるものです!

注:funcを定義した後、また、ステップ・バイ・ステップの実行になりますdebug(func)を渡し、すなわち:debugモードに入り、実際に何が起こっているかを理解します。

l1 <- vector(length = length(J), mode = "list") 
l2 <- vector(length = length(K), mode = "list") 

func <- function(x){ 
    l1[[x]] <- l2 
    func1 <- function(y) { 
    l1[[x]][[y]] <<- matrix(rnorm(J[x]*K[y]), 
          ncol = J[x], 
          nrow = K[y]) 
    } 
    lapply(seq_along(l1[[x]]),func1) 
} 

lapply(seq_along(l1), func) 
+1

はい、私はそれが関数内でループするために4回実行する必要があったので、解決策だと思います。 seq_alongについて理解していますが、2行目のコードについて私に説明してもらえますか? l1 < - vector(length = length(J)、mode = "list")使用する関数を説明するためにそれを書き留めることは必須ですか?事前にありがとう – yannia

+0

@yannia 'l1'が' list'の権利であることをツールに伝える必要があります。あなたはこれを行うことも、 'l1 = list()'を使ってヌルリストを作成することもできます。 –

+1

あなたの説明に感謝します。私は他の公式を試したことがあります。あなたの親切な援助のためにもう一度あなたを感謝します。 – yannia

関連する問題