9

ほとんど使用されていない関数は、多くの問題 (このようなものrapply)に対する完璧な解決策になるはずです。ただし、ユーザー作成関数は、ツリー内のどこにあるかを知ることができません。f

ネストされたリスト内の要素の名前を呼び出しで渡す方法はありfますrapplyか? 残念ながら、rapply呼び出しは.Internalかなり速くなります。

4

3 に答える 3

1

ネストされたリスト内の要素のインデックスを検索しますか? という質問を参照してください。、 あなたは書ける:

rappply <- function(x, f) {
  setNames(lapply(seq_along(x), function(i) {
    if (!is.list(x[[i]])) f(x[[i]], .name = names(x)[i])
    else rappply(x[[i]], f)
  }), names(x)) 
}

それから、

> mylist <- list(a = 1, b = list(A = 1, B = 2), c = list(C = 1, D = 3))
> 
> rappply(mylist, function(x, ..., .name) {
+   switch(.name, "a" = 1, "C" = 5, x)
+ })
$a
[1] 1

$b
$b$A
[1] 1

$b$B
[1] 2


$c
$c$C
[1] 5

$c$D
[1] 3
于 2013-02-02T11:06:03.670 に答える