我有以下功能
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))
这种方法的问题是它没有涵盖一维的情况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
应用于列向量给出了列向量。但是,在一维的情况下,我需要的x
是 apply sum
。有没有一种优雅的方法可以在不使用if
尺寸条件的情况下做到这一点?