do.call()
オプションです:
dim_count <- 5
indexes <- c(1, 2, 2, 2, 3)
dims <- rep(3, dim_count)
pi <- array(seq_len(prod(dims)), dims)
do.call(`[`, c(list(x = pi), as.list(indexes)))
これにより、次のことが得られます。
> do.call(`[`, c(list(x = pi), as.list(indexes)))
[1] 202
> pi[1, 2, 2, 2, 3]
[1] 202
注意が必要なのは、正しい形式で引数のリストを取得することです。pi
の最初の引数にする必要があります"["
(または引数として名前を付けますx
。 を参照?"["
)。一方、indexes
それ自体の各要素は、リスト内のベクトルではなく、指定されたリストのコンポーネントにする必要があります。したがって、複雑なc(list(x = pi), as.list(indexes))
.
従うのがより簡単な引数リストを作成する別の方法は次のとおりです。
ARGS <- vector("list", length = dim_count + 1)
ARGS[[1]] <- pi
ARGS[2:length(ARGS)] <- indexes
do.call("[", ARGS)
を与える
> do.call("[", ARGS)
[1] 202
> pi[1, 2, 2, 2, 3]
[1] 202