remove_outliers
が返すベクトル[属性]をデータフレームに追加する必要があります。今、私は大きな行列を得ています。 (ループ内CBINDで) ループでベクトルを束縛するR
電流出力である:私はそれがこの入力データフレームである大行列に
結果(下記のように)
# function to calculate IQR and upper and lower limit of given attribute
remove_outliers <- function(attribute, na.rm = TRUE, ...) {
IQR_val <- quantile(attribute, probs=c(.25, .75), na.rm = na.rm, ...)
LF <- 1.5 * IQR(attribute, na.rm = na.rm)
attribute_W_NA <- attribute
attribute_W_NA[attribute < (IQR_val[1] - LF)] <- NA
attribute_W_NA[attribute > (IQR_val[2] + LF)] <- NA
attribute_W_NA
}
cleaned_data <- NULL
for(i in 1:ncol(data_rm_val)){
# cleaned data with NA entries replacing outliers
cleaned_data <- cbind(cleaned_data, remove_outliers(data_rm_val[,i]))
}
を追加する方法を試みました
であり、望ましい結果は、同じ数の行と列を持つデータフレームである必要があります。
ご協力いただければ幸いです。 PS:R and Data Scienceの初心者です。
'apply(data_rm_val、2、remove_outliers)'はおそらくより速く、あなたが望むものに適していますが、 'append'ではなく' cbind'を試してみてください。 – Barker
ループを使用する場合は、適切なサイズのオブジェクトを事前に割り当てるか、恐ろしいパフォーマンスが得られます。つまり、ループなしでこれを行うより良い方法があります。質問にデータを追加すると、おそらく誰かが投稿するでしょう。 – alistaire
大丈夫です。私はそれを試みます。 私はcbindも試みました。私はデータフレーム(大きな行列)を持っています。 –