No.04656 R:計算結果(配列)をリストに入れる方法  【米澤】 2007/11/08(Thu) 15:42

今,ループが1から2まで回っていて,myfunc()という関数からz という配列が帰ってくるようなプログラムを作っています(帰ってくる配列はi に依存した統計処理です)。この時,リストを作って x[[i]] <- myfunc(i) (i=1:2)としたいのですが,上手くリストを作ることが出来ません。

for ( i in 1 : 2 ) {
   x[[i]] <- myfunc(i)
}

こ の後,x[[1]] と x[[2]] を比較して結果がどう違うか検証を行いたいと思っています。 要件は「サブルーチンで帰ってきた値をどこかに保存しておきたい」という事なのですが,アドバイスを頂けたら幸いです。ちなみに,あまり理解できない現状 で,for 文の上に x <- vecter(list,2) とやってみましたが,【エラー】以下にエラーvector(list, 2) : 型 builtin は character ベクトルに変換できません。 という結果が出てしまいました。ご教授頂けたら幸いです。宜しくお願いします。

No.04657 Re: R:計算結果(配列)をリストに入れる方法  【青木繁伸】 2007/11/08(Thu) 15:52

領域確保は vector("list", n) ですね
list の周りにダブるクオートが必要です
myfunc <- function(i) {
return(0:(i*2))
}
n <- 4 # 4つの要素を持つリストを作るとき
x <- vector("list", n) # 領域確保
for (i in 1:n) {
x[[i]] <- myfunc(i)
}
x
結果は,
> x
[[1]]
[1] 0 1 2

[[2]]
[1] 0 1 2 3 4

[[3]]
[1] 0 1 2 3 4 5 6

[[4]]
[1] 0 1 2 3 4 5 6 7 8
これに引き続いて
> names(x) <- letters[1:n] # 要素に名前を付けてやるとき
> x
$a
[1] 0 1 2

$b
[1] 0 1 2 3 4

$c
[1] 0 1 2 3 4 5 6

$d
[1] 0 1 2 3 4 5 6 7 8

No.04658 Re: R:計算結果(配列)をリストに入れる方法  【米澤】 2007/11/08(Thu) 16:19

ありがとうございました。勉強になりました。

● 「統計学関連なんでもあり」の過去ログ--- 041 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る