我想將函數exp(-r*(i/500))
應用於矩陣行中的每個值(其中i
表示列號)。我知道如何與一個循環做到這一點,但我努力學習的「正確」方法R.將索引函數應用於矩陣行中的每個值
我想過:
apply(st,1,function(v) { exp(-r * (i/500)*v })
,但我不知道如何界定值爲i
,這樣它會爲每列增加。
我知道一個循環將做到這一點,但我相當肯定,不R.
我想將函數exp(-r*(i/500))
應用於矩陣行中的每個值(其中i
表示列號)。我知道如何與一個循環做到這一點,但我努力學習的「正確」方法R.將索引函數應用於矩陣行中的每個值
我想過:
apply(st,1,function(v) { exp(-r * (i/500)*v })
,但我不知道如何界定值爲i
,這樣它會爲每列增加。
我知道一個循環將做到這一點,但我相當肯定,不R.
如果你必須使用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
也許這樣的事情的最佳方法是什麼?
## 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
試試這個,因爲col(st)
將返回相同尺寸的矩陣st
填充柱
st* exp(-r * (col(st)/500))
不出意外也有一排功能和他們一起可能是有用的。乘法表:
m <- matrix(NA, 12,12)
m=col(m)*row(m)
你的意思是每列'i'應該乘以'exp(-r * i/500)'? – Arun 2013-02-17 20:26:40
是的。對於第1列'i'將是1,對於第2列'i'將是2等 – mrkb80 2013-02-17 20:27:58