私は次の機能を持っています
f <- function(x){sum(g(x - X))}
どこ
X - n-dimensional vector with some data
g is some vecrtorized function
f
n 次元の入力を取り、n 次元の出力を生成できるように関数をベクトル化するにはどうすればよいですか?
私は次のことを試していました
rowSums(sapply(x, "-", X))
このアプローチの問題は、1 次元の場合をカバーしていないことx
です。両方のケースをカバーすることは可能ですか?たとえば、
x <- c(1,2,3)
X <- c(6,9,1)
g <- function(x){x^2}
ベースのコードを使用するsapply
と、正しい答えが得られます (n 次元ベクトル)
rowSums(sapply(x, "-", X))
[1] -12 -21 3
しかしx=1
、同じコードを設定して実行すると、間違った答えが得られます (スカラーではなく n 次元ベクトル)
rowSums(sapply(x, "-", X))
[1] -5 -8 0
rowSums
column-vector に適用すると列ベクトルが得られるため、これは驚くべきことではありません。ただし、一次元の場合に必要なのx
は、適用することsum
です。if
ディメンションの条件を使用せずにエレガントな方法はありますか?