rのforループのパフォーマンスを向上させる方法について少しお読みになりましたが、まだ140秒かかるもので止まっています。データ構造の事前割り振り後のR for-loopsのパフォーマンスを向上させます
私はコードを開始します:
matrix <- matrix(NA, length(register[,1]), length(AK), dimnames = list(register[,1], AK))
data.cleaned <- data[data$FO %in% register[,1],]
rownames(data.cleaned) <- paste(1:nrow(data.cleaned))
for (i in 1 : nrow(data.cleaned)) {
for (j in 1 : nrow(matrix)) {
if (data.cleaned$FO[i] == rownames(matrix)[j]) {
for (k in 1 : ncol(matrix)) {
if (data.cleaned$AK[i] == colnames(matrix)[k])
{matrix[j,k] <- 1}
}
}
}
}
残念ながら、私は、任意の再現性の例を提供することはできません。そのdata.cleanedデータフレームは、約11000行を含むフレームです。各列には、FO(メインカテゴリ)とAK(FOのサブカテゴリ)(2つの異なる変数)の観測があります。
1つの行に対応するFOおよびAK観察がある場合、目標は1で塗りつぶし行列[i、j]です。
これは意味がありますか?
あなたがループに入る前に、あなたは
cnames.m <- colnames(matrix)
を設定することができます。また、私は指定する必要があるかをより明確/より良い方法で
に名前を付けることは良い考えではありませんベクトル化された関数などで置き換えようとします。 – snaut
私の答えのコードがあなたのデータに必要な秒数は何秒ですか? – jogo