我想将函数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