Hadley の R4DS ブックを使用して tidyverse と purrr でループ処理を行っていますが、チルダ ~ 記号とピリオド記号の正確な使用法について少し混乱しています。
そのため、for ループを記述する場合、または map() を使用する場合、function() を記述する代わりに、~ の代わりにチルダ記号を使用できるようです。
これは for ループにのみ適用されますか?
以下のように...
models <- mtcars %>%
split(.$cyl) %>%
map(~lm(mpg ~ wt, data = .))
さらに、私が言われたピリオドは、「現在のリスト要素を参照するために」使用できます。しかし、私はそれが何を意味するのか混乱しています。つまり、ループする場合にのみ、ピリオドは、ループされているリスト内の要素を参照することを意味しますか? パイピングとどう違うの?パイプすると、1 行の結果が次のコード行にパイプされます。
上記の場合、mtcars は split() で 2 行目にパイプされますが、ピリオドが使用されます。なんで?
以下のケースは、私の混乱を要約しています。
x <- c(1:10)
detect(x, ~.x > 5)
最初の一致を見つける検出機能を使用して、私はちょうど使用できると思った
detect(x, x >5)
しかし、x >5 は関数ではないというエラーが表示されます。だから私はチルダを追加します
detect(x, ~ x > 5)
10ではなく、単一のTRUEまたはFALSEが必要であるというエラーが表示されます。したがって、ピリオドを追加すると
detect(x, ~.x >5)
突然ループとして動作します。では、〜と の関係/使用法は何ですか。こちらでいかがでしょうか。単純な配管と比べて?