5
リスト要素のすべてのペアごとの組み合わせに関数を適用したいとします。 各要素は同じ長さのベクトルです。出力はn x n
の行列形式、n
はリストの要素数です。リスト要素のすべてのペアごとの組み合わせに関数を適用するR
は、以下の例を考えてみます
# Generating data
l <- list()
for(i in 1:5) l[[i]] <- sample(0:9, 5, T)
# Function to apply
foo <- function(x, y) 1 - sum(x * y)/sqrt(sum(x^2) * sum(y^2))
# Generating combinations
comb <- expand.grid(x = 1:5, y = 1:5)
このループ作品が、それは遅いですし、出力が行列
# Applying function
out <- list()
for(i in 1:nrow(comb)) {
out[[i]] <- foo(l[[comb[i, 'x']]], l[[comb[i, 'y']]])
}
任意のアイデアとしてフォーマットされていませんか?
sapply(l, function(x) sapply(l, function(y) foo(x,y)))
私は@Aに興味を持っていました:
'outer(l、l、Vectorize(foo)) ' –
うわー!あなたの答えをありがとう、それはずっと速い;) – goclem