私は関数IFを含むカスタム関数を持っています。その関数をdata.tableで使用すると、 という警告が表示されます。「条件の長さが1より大きく、最初の要素のみが使用されます。data.tableのif関数を使用した警告メッセージ
私はこの機能を必要に応じて一度に1つの行ではなく列のすべての行に適用できると思いますが、私は確信していません。
この警告が表示される理由を知っている人はいますか?
My機能は次のとおりです。
HeatIndex<-function(TempC,RH)
{
TFarheit= TempC * 1.8 + 32
if(TFarheit <80 ) {
Te=TempC /15
HI = Te/15
} else {
TA=TempC /11
HI = TA/125
}
HI= (HI - 32)/1.8
return(HI)
}
データのサンプル:
HeatINDEX=data.table(Ave_MeanRH=c(0,100), Ave_MeanT=c(10,20)) #create data.table
とコメントで、あなたがすることができます示唆したようにデータ
HeatINDEX[,HI:=HeatIndex(HeatINDEX$Ave_MeanT, HeatINDEX$Ave_MeanRH)]
'速い' ソリューションは、あなたがそれを 'by'の各行に適用する指定することです:'不快指数[、HI:=不快指数(Ave_MeanT、Ave_MeanRH)、= 1:nrow(不快指数)] ' – SymbolixAU
通常は、' if'ではなく 'ifelse'を使用して比較を行います。 https://stackoverflow.com/questions/17252905/else-if-vs-ifelse – Marius
「by」パラメータを使用しても警告が維持されますを参照してください。より大きいデータベースでは、すべての行に関数を実行するのに多くの時間がかかります – Camilo