私は、ロシアの人形のように一方の関数をもう一方の関数にネストするだけで、Rでこの再帰演算(畳み込み)を実行しています。問題は、これを行うためのよりエレガントな方法があるかどうかです。
まず、次の入力ベクトルを設定するためのより良い方法が確かにあります。
ones = c(1, 1, 1, 1, 1, 1)
twos = c(1, 0, 1, 0, 1, 0)
threes = c(1, 0, 0, 1, 0, 0)
fours = c(1, 0, 0, 0, 1, 0)
実際の行は次のとおりです。
round(convolve(convolve(convolve(ones, rev(twos), type="open"), rev(threes), type="open"), rev(fours), type="open")) [1] 1 1 2 3 5 6 6 8 8 8 6 6 5 3 2 1 1 0 0 0 0
library(purrr)
data <- list(ones, twos, threes, fours)
round(reduce(data, ~ convolve(.x, rev(.y), type = "open")))
あなたはベースで同じことを達成することができますReduce()
:
round(Reduce(f = function(x, y) convolve(x, rev(y), type = "open"), x = data))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加