2
リストに格納されたベクトルのペアごとの組み合わせをすべて効率的に抽出する方法を探しています。このコードの目的は、100000回の反復でリサンプリングする手順の中で、可能なすべてのペアのデータベクトルの組み合わせの平均相関を計算することです。リスト内の要素の高速組み合わせR
# Data simulation
set.seed(90)
dummy_data <- matrix(runif(21120),33,640)
dummy_list <- vector("list",length = 33)
for (i in 1:33){
dummy_list[[i]] <- dummy_data[i,]
}
私がこれまでに発見したソリューションです:それは本当に遅いですので、私はむしろ非効率的な見つけ
n_iter <- 100000
cor_out <- vector("numeric",length = n_iter)
# For each iteration
for (z in 1:n_iter){
# Randomly shuffle the data
dummy_list_resample <- lapply(dummy_list, FUN = function(x){sample(x,size = 640)})
all_ind <- length(dummy_list_resample)
combs <- combn(all_ind,2)
# Initialize list for storing all pairwise observations
out_list <- vector("list",length(dim(combs)[2]))
# For each pairwise combination
for(i in 1:dim(combs)[2]){
# Identify and extract the data for each pair of subject
pair <- combs[,i]
vec1 <- dummy_list_resample[[pair[1]]]
vec2 <- dummy_list_resample[[pair[2]]]
out_list[[i]] <- cbind(vec1,vec2)
}
# Compute correlation for each pairwise combination
# and store the average value
cor_iter <- sapply(out_list, FUN = function(x){cor(x[,1],x[,2])})
cor_out[z] <- mean(cor_iter)
}
(〜コンピューティングの12時間)
は、回避する方法はありますループ?私は反復を高速化する方法としてRcppを認識していますが、残念ながら私はC++に精通していません。ヒントや例があれば幸いです。
あなたの例は機能しません - 確認してください –
未定義の変数が原因でコードを実行できません。より具体的にすることができますか、またはあなたの期待される結果を理解するための実用的なコードを教えてください。 – JRR
reprexを使用して、* repr * oducible * ex *を準備することができます。 http://reprex.tidyverse.org –