1
mapply
ではなくapply
を使用するVectorize
のバージョンがありますか。 は、その関数に配列を渡し、ベクトルを返すようにベクトル入力を受け付ける関数をベクトル化したいと思います。mapply()ではなくapply()のVectorize()のバージョン?
私は自分のラッパーを書くことができますが、それは十分に機能します。しかし、私はこの機能が組み込まれているのだろうかと思ったのですか?
私はVectorize
も使用できますが、マトリックス入力をdata.frameに変換して作業する必要があります。例えば:私が欲しいものではありませんが、
> my.data <- data.frame(my.data)
> my.fun(my.data, mean=THETA, S=LAMBDA, df=NU)
X1 X2
0.8130572 0.9996274
は私が欲しいものである
LAMBDA <- cbind(c(1, .5, .5), c(.5, 1, .5), c(.5, .5, 1))
THETA <- c(0,0,1)
NU <- 21
my.data <- array(1:6, c(3,2))
my.fun <- Vectorize(pmt, vectorize.args="x")
その後
> my.fun(my.data, mean=THETA, S=LAMBDA, df=NU)
[1] 0.4404142 0.8130572 0.9667065 0.9961166 0.9996274 0.9999676
BTW、pmt
は、mnormtパッケージに含まれています。多変量解析の学生用です。
「my.data」は行列ではなくベクトルになりますか?もしそうなら、それを1列の行列にすることはできますか? – Aaron
そうならば、 'apply(matrix(my.data、nrow = 3)、2、pmt、mean = THETA、S = LAMBDA、df = NU)'だけが必要です。これは、ベクトルと行列の両方で機能します。 – Aaron
@少なくともAaronの解は、私がそうであれば他の解であっても、少なくとも読みやすさの面では優れています。私は 'Vectorize'が' args < - lapply(as.list(match.call())[ - 1L]、eval、parent.frame()) 'のようなことをしていると思います。私はそれを完全に理解していません。 – kalu