3

exp(-r*(i/500))行列の行のすべての値に関数を適用したいと思います(ここでi、は列番号を表します)。私はループでこれを行う方法を知っていますが、Rで「正しい」方法を学ぼうとしています。

私は考えました:

apply(st,1,function(v) { exp(-r * (i/500)*v })

iしかし、列ごとに増分するように、値を定義する方法がわかりません。

私はループがこれを達成することを知っていますが、それはRの最適な方法ではないとかなり確信しています。

4

3 に答える 3

3

を使用する必要がある場合はapply、このようなものですか?

> apply(as.matrix(seq_len(ncol(m))), 1, function(x) exp(-r * m[,x]/500))

mマトリックスはどこにありますか。

もちろん、applyここで使用する必要はありません。適切なマトリックスを作成する必要があります。

exp(-r * matrix(rep(1:ncol(m), nrow(m)), nrow=nrow(m), byrow=T)/500) * m
于 2013-02-17T20:31:46.063 に答える
3

これを試してください。列が入力col(st)されたのと同じ次元の行列が返されるためです。st

st* exp(-r * (col(st)/500))

当然のことながら、行関数もあり、一緒に使用すると便利です。掛け算の九九:

m <- matrix(NA, 12,12)
m=col(m)*row(m)
于 2013-02-17T20:37:24.720 に答える
1

多分このようなもの?

## m is the matrix with your data
m <- matrix(1:50,ncol=10,nrow=5)
## m2 is a matrix with same dimensions and each element is the column number
m2 <- matrix(rep(1:ncol(m),nrow(m)),ncol=ncol(m),nrow=nrow(m),byrow=TRUE)
## Compute m2 such as each value is equal to expr(-r*(i/500))
m2 <- exp(-r*(m2/500))
## multiply m and m2
m*m2
于 2013-02-17T20:28:22.613 に答える