2017-12-07 4 views
0

私はLyの各値に対してLxの各パラメーター値を使って関数を反復しています。この関数はリストを作成し、リストをマトリックスに入れます。結果のリストに名前をつけて、関数の実行ごとにどのようなパラメータの組み合わせ(LxとLy)が使用されているかを知るようにしています。以下の再現可能な例を参照してください。Rマトリックスのリストに名前を割り当てる

test_sim <- function(Lx, Ly){ 
    results=list() 
    ret <- runif(3, min=0, max=100) 
    results[[1]]=ret 
    names(results)[1]=paste(Lx,Ly,sep = "_") 
    return(results) 
} 
Lx <- seq(0.25,0.5,0.25) 
Ly <- seq(0.05, 0.10, 0.05) 
blam <- sapply(Lx, function(x) mapply(test_sim, x, Ly)) 

ただし、これは行列の最初の2つの行の名前にしか見えません。どのように各リストに適切な名前を付けることができますか?

答えて

1

sapplyの代わりにlapplyを使用できます。

これは、ネストされたリストを生成します:

# This produces a nested list 
blam <- lapply(Lx, function(x) mapply(test_sim, x, Ly)) 
blam; 
#[[1]] 
#[[1]]$`0.25_0.05` 
#[1] 80.11677 60.42781 83.07715 
# 
#[[1]]$`0.25_0.1` 
#[1] 34.98122 13.24191 64.38831 
# 
# 
#[[2]] 
#[[2]]$`0.5_0.05` 
#[1] 56.466308 7.158086 66.655274 
# 
#[[2]]$`0.5_0.1` 
#[1] 66.88615 16.05237 43.16896 

あなたはその後、unlist(..., recursive = FALSE)を使用してリストを平らにすることができます

# Flatten nested list 
unlist(blam, recursive = FALSE); 
#$`0.25_0.05` 
#[1] 80.11677 60.42781 83.07715 
# 
#$`0.25_0.1` 
#[1] 34.98122 13.24191 64.38831 
# 
#$`0.5_0.05` 
#[1] 56.466308 7.158086 66.655274 
# 
#$`0.5_0.1` 
#[1] 66.88615 16.05237 43.16896 
+0

はい!できます。私は 'unlist'の' recursive'について知らなかった。 – user2359494

関連する問題