我想计算一个速率,它表示所有值中的负值数量,我想在给定矩阵的每一行中应用它。
func1<-function(N){
alpha1 = 8.439e-02
beta1 = 8.352e-01
mu = 7.483e-03
omega = 1.343e-04
X_0 = -3.092031e-02
sigma_0 = 0.03573968
eps = rt (N,7.433e+00)
# loops
Xn= numeric (N)
sigma= numeric (N)
sigma[1] = sigma_0
Xn[1] = X_0
for (t in 2:N){
sigma[t] = sqrt (omega + alpha1 * (Xn[t-1])^2 + beta1* (sigma[t-1])^2)
Xn[t] = sigma[t] * eps[t]
}
A = mu + Xn
return(A)
}
M<-replicate(1000,func1(420))
M2<-t(M)
func<-function(x){
count<-as.numeric()
count[1]=0
for(i in 1:420){
if(x[i]<0){
count[i+1]=count[i]+1
}
else{count[i+1]=count[i]
}
}
return(count)
x<-as.vector(x)
count<-func(x)
finalcount<-count[421]
rate<-finalcount/420
}
apply(M2,1,func)
M2是我想要使用的矩阵,X表示行替换为函数
答案 0 :(得分:0)
以下是实现目标的方法:
我们假设你创建一个矩阵如下:
m <- matrix(-9:10, nrow = 5)
m
[,1] [,2] [,3] [,4]
[1,] -9 -4 1 6
[2,] -8 -3 2 7
[3,] -7 -2 3 8
[4,] -6 -1 4 9
[5,] -5 0 5 10
除了最后一行,每行有两个负数。
每行负数的比例可按如下方式计算:
rowMeans(m < 0)
[1] 0.50 0.50 0.50 0.50 0.25
如果您愿意,可以使用apply
,如下所示,但循环遍历每一行:
apply(m, 1, function(x) sum(x < 0) / length(x))
[1] 0.50 0.50 0.50 0.50 0.25