0
私のデータから異常値を除外しようとしています。ここに私のデータから頭がある:私は私が探しています結果を得る(リスト)は、dplyrで関数内で二重に強制することはできません
lidar_summary_5_max_height_outlier_filter <- lidar_summary_5 %>%
filter(max_height <= mean(max_height)+2*sd(max_height) | max_height >= mean(max_height) - 2*sd(max_height))
:私は、次のコードを使用
X tile resolution topo max_height mean_height rugosity vertical_diversity openness
1 9 1 5 high 19.41845 10.244725 5.533991 0.7931086 10.049369
2 21 10 5 high 22.49638 13.684197 5.707197 0.7863063 5.613547
3 33 11 5 high 16.96429 9.886287 4.190133 0.7471749 11.596492
4 45 12 5 high 19.83373 10.516013 5.297644 0.8006827 6.116738
5 57 13 5 high 21.69734 12.872438 6.009529 0.7797255 5.602573
6 69 14 5 high 23.77329 15.121994 5.777413 0.7651389 4.814283
。しかし、私はいくつかの繰り返しを行っているので、いくつかの変数max_height, mean_height, rugosity, vertical_diversity, openness
とそれぞれ異なるデータファイルに渡すことができる関数を作成しようとしています。
outlier_filter <- function(dat, col){
dat %>%
dplyr::filter(col <= (mean(col)+2*sd(col)) | col >= (mean(col) - 2*sd(col)))
}
dat
は、データフレームの名前で
とcol
は私がから外れ値を削除しています変数です:私は次の関数を作りました。
Error in is.data.frame(x) :
(list) object cannot be coerced to type 'double'
と警告:私はこの機能を実行すると、私は次のエラーを取得
In addition: Warning message:
In mean.default(col) : argument is not numeric or logical: returning NA
を私は別に、これらのエラーを検索しようとしましたが、私が見つけた解決策は、この場合には役立ちませんでした。メソッドが関数の外部でうまく動作するが、関数では機能しないので、何が起きているのか分かりません。
あなたは[こちら] dplyrプログラミングビネットに興味があるかもしれません(https://cran.r-project.org/web/パッケージ/ dplyr/vignettes/programming.html) – aosmith
ありがとう!それは問題のようです。ベースRでこれを行うほうが簡単でしょうか? – thatsciencegal