8

データ操作は好きdplyrですが、プログラミングでの使い方がわかりません。たとえば、いくつかの変数を再スケーリングするには、次のようにします。

mutate(cars, speed.scaled = scale(speed), dist.scaled = scale(dist))

とてもかっこいい。mutateしかし、ここで、データ フレーム内のすべての変数をスケーリングするために使用する関数を書きたいとします。...引数を作成するにはどうすればよいですか? 私が思いつくことができる最高のものは次のようなものです:

fnargs <- lapply(names(cars), function(x){call("scale", as.name(x))})
names(fnargs) <- paste0(names(cars), ".scaled")
do.call(mutate, c(.data=as.name("cars"), fnargs))

または、よりプログラミングしやすい代替インターフェイスはありますか?

4

2 に答える 2

4

簡単です:mutate_each(cars, funs(scale))またはを使用しますapply(cars, 2, scale)

于 2014-07-11T20:39:12.757 に答える
1

これは、次のようにベース R で実行できます。

cars.scaled <- as.data.frame(scale(cars))

また

cars.scaled <- replace(cars, TRUE, lapply(cars, scale))

また

cars.scaled <- cars
cars.scaled[] <- lapply(cars, scale)

上記の最初のものは、次のように動作する%>%ように変換できます。

cars.scaled <- cars %>% scale %>% as.data.frame
于 2014-07-11T21:38:10.190 に答える