public String getDataAt(int index) {
   if (levels == null || levels.getLength() == 0) {
     return RRuntime.STRING_NA;
   } else {
     int val = ((RIntVector) vector).getDataAt(index);
     if (!vector.isComplete() && RRuntime.isNA(val)) {
       return RRuntime.STRING_NA;
     } else {
       String l = levels.getDataAt(val - 1);
       if (!levels.isComplete() && RRuntime.isNA(l)) {
         return "NA"; // for comparison
       } else {
         return l;
       }
     }
   }
 }