我正在运行下一个循环,但是R不接受它。
Buy<-c(320,200,500,490,443,445,202,113,673,319)
Sell<-c(234,456,463,663,243,267,209,100,290,215)
data=cbind(Buy,Sell)
a_i <- c(0.1,0.3,0.5,0.7,0.9)
d_j <- c(0.1,0.3,0.5,0.7,0.9)
g_n <- c(0.1,0.3,0.5,0.7,0.9)
B_bar <- mean(data[,1])
S_bar <- mean(data[,2])
sort_mat <- cbind(nrow=125, ncol=6)
k <- 1
for (i in (1:5)) {
for (j in (1:5)) {
for (n in (1:5)) {
a <- a_i[i]
d <- d_j[j]
g <- g_n[n]
e_b <- g*B_bar
u <- (B_bar-e_b)/(a*(1-d))
e_s <- S_bar- (a*d*u)
if(e_s<0){
k <- k+1
next
}
in_param <-c(a,d,u,e_b,e_s)
sort_mat[k,1] <- in_param[1]
sort_mat[k,2] <- in_param[2]
sort_mat[k,3] <- in_param[3]
sort_mat[k,4] <- in_param[4]
sort_mat[k,5] <- in_param[5]
k <- k+1
}
}
}
sort_mat
但是,出现以下错误:
Error in `[<-`(`*tmp*`, k, 3, value = in_param[3]) :
subscript out of bounds
据我所知,k不会增加,因为结果矩阵(sort_mat)仅填充了一行(k = 1)。问题的潜在原因是什么?我该如何解决以上代码? 谢谢!
答案 0 :(得分:0)
您必须以不同的方式初始化data frame
,例如
sort_mat <- data.frame()
看看您的初始data frame
,您创建了一个包含两列(变量)nrow
和ncol
的数据框,但没有将它们设置为row或列参数,因为data.frame
不接受这些参数。
sort_mat <- cbind(nrow=125, ncol=6)
> sort_mat
nrow ncol
[1,] 125 6
总体上,这是您要寻找的内容(5列120行)吗?
> head(sort_mat)
V1 V2 V3 V4 V5
1 0.1 0.1 3705.0000 37.05 276.9500
2 0.1 0.1 2881.6667 111.15 285.1833
3 0.1 0.1 2058.3333 185.25 293.4167
4 0.1 0.1 1235.0000 259.35 301.6500
5 0.1 0.1 411.6667 333.45 309.8833
6 0.1 0.3 4763.5714 37.05 171.0929