Error 'subscript out of bounds'

The code I am having issues with is below.

#>  Error in imputations[["imputations"]][[paste("imp", j, sep = "")]][["B1PRSEX"]] : 
  subscript out of bounds
R_code <- for (j in 1:50) {
  for (i in 1:639) {
    if (imputations[["imputations"]][[paste("imp",j,sep="")]][["B1PRSEX"]][i]==1) {
      imputations[["imputations"]][[paste("imp",j,sep="")]][['L']][i]=
        0.49716*(imputations[["imputations"]][[paste("imp",j,sep="")]][["B1PAGE_M2"]][i]/10)+
        0.47254*imputations[["imputations"]][[paste("imp",j,sep="")]][["CIGSTA"]][i]+
        0.45341*imputations[["imputations"]][[paste("imp",j,sep="")]][["HXCVD"]][i]+
        0.08064*imputations[["imputations"]][[paste("imp",j,sep="")]][["HXofAFib"]][i]

we dont have your preceding code or data; so our ability to help you is limited.

reprex-guide
You seem to have a rather convoluted data structure.
multidimensional matrices? or lists in lists ? or a mix of the two ?

things to think about
why is it safe to range j from 1 to 50 ?
why is it safe to range i from 1 to 639 ?
for each j ( 1 to 50) would there be a "B1PRSEX" at the end of imputations[["imputations"]][[paste("imp",j,sep="")]] ? would it have 1:639 elements?

j is for 50 imputations and i is for number of cases. The loop was created to basically create a score for each of the 50 imputations for each ease. BIPRSEX is not the only variable needed to create the score, yet it is the only one that has an error?

An error high up in your code will likely make any errors that would have been subsequent irrelevant as your code stopped. The object may be special, or it may be ordinary. I would have to investigate or be told in order to know.

Got it. below is the entire code. Trying to see if you can spot what the error is?

'''r
R_code <- for (j in 1:50) {
for (i in 1:639) {
if (imputations[["imputations"]][[paste("imp",j,sep="")]][["B1PRSEX"]][i]==1) {
imputations[["imputations"]][[paste("imp",j,sep="")]][['L']][i]=
0.49716*(imputations[["imputations"]][[paste("imp",j,sep="")]][["B1PAGE_M2"]][i]/10)+
0.47254imputations[["imputations"]][[paste("imp",j,sep="")]][["CIGSTA"]][i]+
0.45341
imputations[["imputations"]][[paste("imp",j,sep="")]][["HXCVD"]][i]+
0.08064*imputations[["imputations"]][[paste("imp",j,sep="")]][["HXofAFib"]][i]

  if (imputations[["imputations"]][[paste("imp",j,sep="")]][["B1PAGE_M2"]][i]>=65) {
    imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+0.45426
  } else {
    imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+0
  }
  
  if (imputations[["imputations"]][[paste("imp",j,sep="")]][["DxDMperGlu"]][i]==1) {
    if (imputations[["imputations"]][[paste("imp",j,sep="")]][["B1PAGE_M2"]][i]>=65) {
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
        imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+0.34385
    } else {
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
        imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+1.35304
    }
  } else {
    imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+0
  } 
  
  if (imputations[["imputations"]][[paste("imp",j,sep="")]][["AntiHyperMed"]][i]==1) {
    imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+0.82598+
      (0.09793*(imputations[["imputations"]][[paste("imp",j,sep="")]][["B4P1GS23"]][i]-120)/10)
  } else {
    imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+
      (0.27323*(imputations[["imputations"]][[paste("imp",j,sep="")]][["B4P1GS23"]][i]-120)/10)
  }
} else {
  imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
    0.87938*(imputations[["imputations"]][[paste("imp",j,sep="")]][["B1PAGE_M2"]][i]/10)+
    0.51127*imputations[["imputations"]][[paste("imp",j,sep="")]][["CIGSTA"]][i]-
    0.03035*imputations[["imputations"]][[paste("imp",j,sep="")]][["HXCVD"]][i]+
    1.2072*imputations[["imputations"]][[paste("imp",j,sep="")]][["HXofAFib"]][i]
  
  if (imputations[["imputations"]][[paste("imp",j,sep="")]][["B1PAGE_M2"]][i]>=65) {
    imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+0.39796
  } else {
    imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+0
  }
  
  if (imputations[["imputations"]][[paste("imp",j,sep="")]][["DxDMperGlu"]][i]==1) {
    if (imputations[["imputations"]][[paste("imp",j,sep="")]][["B1PAGE_M2"]][i]>=65) {
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
        imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+0.06565
    } else {
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
        imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+1.07111
    }
  } else {
    imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+0
  } 
  
  if (imputations[["imputations"]][[paste("imp",j,sep="")]][["AntiHyperMed"]][i]==1) {
    imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+0.13085+
      (0.17234*(imputations[["imputations"]][[paste("imp",j,sep="")]][["B4P1GS23"]][i]-120)/10)
  } else {
    imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]=
      imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]+
      (0.11303*(imputations[["imputations"]][[paste("imp",j,sep="")]][["B4P1GS23"]][i]-120)/10)
  }
}
if (imputations[["imputations"]][["imp1"]][["B1PRSEX"]][i]==1) {
  imputations[["imputations"]][[paste("imp",j,sep="")]][["FRFS"]][i]=
    (1-0.94451)*(exp(imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]-4.4227101))
} else {
  imputations[["imputations"]][[paste("imp",j,sep="")]][["FRFS"]][i]=
    (1-0.95911)*(exp(imputations[["imputations"]][[paste("imp",j,sep="")]][["L"]][i]-6.6170719))
}

}
}
'''

Thanks for providing code. Could you kindly take further steps to make it easier for other forum users to help you? Share some representative data that will enable your code to run and show the problematic behaviour.

How do I share data for a reprex?

You might use tools such as the library datapasta, or the base function dput() to share a portion of data in code form, i.e. that can be copied from forum and pasted to R session.

Reprex Guide

Advice.
If you have code that process many files, in iterative fashion, sre the repetitions relevant to the problem, or would you see the issue with a single file ? If so your example should only concern a single file.
If your issue does not relate to file reading , i.e . You have no problem loading your raw data, your problem is manipulating/processing it, then you should modify your example to exclude all file loading code and substitute that code with example data that you prepared following the guide.

Thanks for the suggestion. I created a stimulated data and the code worked, so this told me there was something with my original data that was causing the error. I eventually found the error.

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.