0
私は何度も呼ばれ、次の2つのコマンドは、ほとんどの時間を消費することを発見しますRコードを最適化しています
dataset <- dataset[which(dataset$responder==T),]
for (i in 1:ncol(dataset))
if (is.factor(dataset[,i]))
dataset[,i] <- dataset[,i][drop=T]
私は方法があるかどうかを確認するためにグーグルでみましたがこれらを最適化するためには何も見つかりませんでした。これらのラインを改善する方法はありますか?理想的には、ソリューションはコンパイルする必要はなく、コードを読むことができないようにすべきです。
'データセット[データセットの$レスポンダ]' '[、(データセットの$レスポンダー== T)]'データセットよりも高速ではないでしょうか? –
@BenBolker:提案していただきありがとうございます。 which()はきわめて最適化された関数であるようです。いくつかのシミュレーションを実行すると、私は論理ベクトルを直接使用するだけで平均110ミリ秒(平均)となります。中央値は87から77に改善されています。しかし、あなたの提案を使用する際、出力にNA行を生成するため、データセットにNAがないことを確認する必要があります。 –
@BenBolker:isTRUEは同一(TRUE、x)の略語であり、このシナリオでは使用しないでください。ベクトルの長さが1より大きい場合は常にFALSEを返します。 –