r - R中的for循环,下标超出范围
问题描述
我正在运行以下循环,但 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)。问题的潜在原因是什么?我怎样才能在上面的代码中解决?谢谢!
解决方案
你必须初始化data frame
不同的,例如
sort_mat <- data.frame()
看看您的 intial ,您已经创建了一个数据框,其中包含名为anddata frame
的两列(变量),但您没有将它们设置为行或列参数,因为不接受这些参数。nrow
ncol
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
推荐阅读
- android - 如何在片段中使用 FirebaseRecycle Adapter 来显示 Firebase 数据库?
- sublimetext3 - 找不到匹配的支架 - 支架荧光笔包
- midi - 同时播放和录制 MIDI 流
- c# - 接收输入,打印输出
- jquery - 如何一起选择特定的表格和班级和ID
- python - 使用 OpenAI Gym 构建 mujoco-py 失败的轮子
- javascript - Ajax同步post方法,从Node服务器端获取数据
- bash - 每次重启 AWS EC2 实例时执行脚本
- c# - 我遇到关于“Expr1000”的错误
- reactjs - 在 ReactJS 中路由后从子组件获取值