リストのリストを返す関数があります。リストの結果を分けたいと思います。第2要素の最初の要素。リストの出力をRで分離する方法
x1 <- replicate(4,0.5)
x2 <- replicate(4,0.7)
x <- list(x1,x2)
y <- list(0.5,0.6,0.3,0.4)
myfu <- function(x,y){
out <- list()
out$y <- lapply(1:4, function(i){lapply(1:2, function(j) y[[i]]*x[[j]])})
return(out)
}
この関数は返します:
$y
$y[[1]]
$y[[1]][[1]]
[1] 0.25 0.25 0.25 0.25
$y[[1]][[2]]
[1] 0.35 0.35 0.35 0.35
$y[[2]]
$y[[2]][[1]]
[1] 0.3 0.3 0.3 0.3
$y[[2]][[2]]
[1] 0.42 0.42 0.42 0.42
$y[[3]]
$y[[3]][[1]]
[1] 0.15 0.15 0.15 0.15
$y[[3]][[2]]
[1] 0.21 0.21 0.21 0.21
$y[[4]]
$y[[4]][[1]]
[1] 0.2 0.2 0.2 0.2
$y[[4]][[2]]
[1] 0.28 0.28 0.28 0.28
私の質問は、私はすべてのy[[i]][[2]]
からすべてのy[[i]][[1]]
を分離することができますどのように、ある はここでの例です。つまり、次のような結果が得られます。
$y
$y[[1]]
$y[[1]][[1]]
[1] 0.25 0.25 0.25 0.25
$y[[2]]
$y[[2]][[1]]
[1] 0.3 0.3 0.3 0.3
$y[[3]]
$y[[3]][[1]]
[1] 0.15 0.15 0.15 0.15
$y[[4]]
$y[[4]][[1]]
[1] 0.2 0.2 0.2 0.2
2番目の要素と同じ結果が得られます。
は、あなたの助けのためにどうもありがとうございます。それは本当に素晴らしいです。私たちはその機能の中でそれを使うことができますか? – Alice
@Aliceはい、 'out%>% map(transpose)'を実行してから 'myfu(x、y)'を呼び出すことができます – akrun
問題は 'lapply'関数の実装方法にあると思います。 –