繁体   English   中英

对于循环,R中的尺寸数量不正确

[英]For loop incorrect number of dimensions in R

我试图通过遍历向量的行(theta)和单独的矩阵(tmp)的列来创建响应概率矩阵。 我不断收到错误消息incorrect number of subscripts on matrix并且不确定自己在做什么错。 任何帮助,将不胜感激!

theta = seq(from=-4, to=4, by=.01)

ID = c(1:10)
a = c(1.11,1.03,1.03,1.62,1.23,1.16,1.46,0.91,0.78,0.85)
b = c(-0.33,0.05,-1.25,-0.18,0.47,-1.11,-0.17,-0.57,-0.18,0.45)
c = c(0.16,0.18,0.17,0.24,0.12,NA,NA,NA,0.29,NA)

tmp = data.frame(ID,a,b,c)

for (j in 1:nrow(tmp)) {
  for (k in 1:length(theta)){
  RP[k,j] = tmp$c[j] + ((1-tmp$c[j])/
                (1+exp(-1.7 * tmp$a[j]*theta - tmp$b[j])))
  }
}

期望的结果是一个矩阵,其行数与theta的长度相同,并且列数与tmp数据帧相同。 它看起来应该像这样:

head(tmp2)
         p1        p2        p3        p4        p5 p6 p7 p8        p9 p10
1 0.1603182 0.1807822 0.1702159 0.2400104 0.1203281 NA NA NA 0.2929362  NA
2 0.1603243 0.1807960 0.1702197 0.2400107 0.1203350 NA NA NA 0.2929752  NA
3 0.1603305 0.1808100 0.1702236 0.2400110 0.1203421 NA NA NA 0.2930148  NA
4 0.1603368 0.1808243 0.1702276 0.2400113 0.1203493 NA NA NA 0.2930549  NA
5 0.1603432 0.1808389 0.1702316 0.2400116 0.1203567 NA NA NA 0.2930955  NA
6 0.1603497 0.1808537 0.1702357 0.2400120 0.1203642 NA NA NA 0.2931366  NA

for循环的最后一行,您将整个向量theta用作乘数:

(1+exp(-1.7 * tmp$a[j]*theta - tmp$b[j])))

大概您打算使用第k个元素:

(1+exp(-1.7 * tmp$a[j]*theta[k] - tmp$b[j])))

由于您省略了矩阵RP的定义,因此我无法对此进行测试,但是我确定您并不是要在循环中每次返回801个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM