Rのapply関数を使用するように、既存のループベースのコードを変換しようとしています。このプロジェクトの仕様に従って、追加のライブラリ(plyrなど)は許可されていません。
これが現在の動作です。
Type Pressure Temp 1 Iron 100 10 2 Copper 200 20
for(i in 1:rnow(data))
{
if(data$Type[i] == "Iron")
Output[i] <- IronCalculation(data$Pressure[i]...)
else if(data$Type[i] == "Copper")
Output[i] <- CopperCalculation(data$Pressure[i]...)
}
これを変換して関数を使用したいと思いapply()
ます。私はいくつかの方法を試しましたが、apply()
すべての変数値を文字に変換するために行き詰まり、これらの数値をコンパイルすることはできません。元のデータセットには150以上の変数があり、その多くは文字列/文字です。
テストとして、私は以下を試しました。明らかに失敗します。as.numeric()を使用して文字変数を数値に変換できますが、8000以上の行とそれぞれに20個の変数があります。CPUサイクルの浪費のようです。
apply(data[1,], 2, function(x) {
if(x['Type'] == "Iron")
Output <- IronCalculation(x['Type'],x['Pressure']...)
})
誰か助けてもらえますか?適用関数を使用するようにこのループを変更するにはどうすればよいですか?