Используйте fread () в repeat {}, чтобы получить из него максимальные значения строк в R - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь читать кусками кода, используя fread () и функцию повтора.После импорта выбора столбцов я хочу вычислить максимальное значение на строку и назначить его в таблицу данных результатов.

Таблица данных результатов должна быть последовательно дополнена максимальными значениями, выходящими из цикла.

К сожалению, после завершения первого цикла появляется следующее сообщение об ошибке:

Ошибка в ans [[1L]]: нижний индекс вне границ

Кроме того, таблица данных результатов с максимальными значениями перезаписывается после каждого цикла, так как я не понял, как его последовательно обогащать.

Это то, что у меня есть до сих пор пробовал :

FileName <- "/Users/flickrexport_cars_oid_201903.csv"
index <- 0
chunkSize <- 100000
skipindex <- 0
skipsize <- 0

repeat {

  #Set Index for Processing Message
  index <- index + 1
  print(paste('Processing rows:', index * chunkSize))

  #Import Data Chunked
  DataChunk <- fread(FileName,colClasses = "numeric", select = humanbodyparts, nrows = chunkSize, skip = skipsize, sep=",", encoding = "Latin-1", header=TRUE)

  #Set NAs to Zero
  f_dowle3 = function(DT) {
    for (j in names(DT))
      set(DT,which(is.na(DT[[j]])),j,0)
  }
  f_dowle3(DataChunk)

  #Assign Max Values to Results Table
  HumanBodyResults1 <- DataChunk[, HumanBodyParts := do.call(pmax, .SD), .SDcols = intersect(names(DataChunk),humanbodyparts)]
  HumanBodyResults <- HumanBodyResults1[, setdiff(names(HumanBodyResults1),"HumanBodyParts"):=NULL]

  #Check Result of Data Chunk
  print(head(HumanBodyResults))

  #Increase Index for Rows to Skip
  skipindex <- skipindex + 1
  skipsize <- skipindex * chunkSize

  if (nrow(DataChunk) != chunkSize){
    print('Processed all files!')
    break}
}

Результат должен быть таблицей данных, содержащей все максимальные значения строк (HumanBodyResults), обработанных в цикле.

Данные:

Переменная «humanbodyparts» содержит конкретные имена столбцов, такие как:

> humanbodyparts
  [1] "oid.Abdomen"           "oid.Adolescent"        "oid.Adult"             "oid.Arm"               "oid.Army men"          "oid.Art model"        
  [7] "oid.Artmodel"          "oid.Athlete"           "oid.Audience"          "oid.Baby"              "oid.Bangs"             "oid.Barechested"   

Данные, которые будут импортированы с помощью fread() имеет следующую структуру:

> str(DataChunk)
Classes ‘data.table’ and 'data.frame':  100000 obs. of  101 variables:
 $ oid.Abdomen        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Adolescent     : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Adult          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Arm            : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Artmodel       : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Athlete        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Audience       : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Baby           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Bangs          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Barechested    : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Bassist        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Beard          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Bishop         : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Blackhair      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Boy            : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Bride          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Catcher        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Cheek          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Chest          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Child          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Chin           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Clergy         : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Crowd          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Defenseman     : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Drummer        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Ear            : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Elder          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Eye            : num  NA NA NA NA NA ...
 $ oid.Eyebrow        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Eyelash        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Face           : num  NA NA NA NA NA ...
 $ oid.Facialhair     : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Family         : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Female         : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Finger         : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Firefighter    : num  NA NA NA NA NA ...
 $ oid.Foot           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Footballplayer : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Forehead       : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Gardener       : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Gentleman      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Girl           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Goalkeeper     : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Goaltender     : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Golfer         : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Grandparent    : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Groom          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Guitarist      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Hair           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Hairstyle      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Hand           : num  NA NA NA NA NA ...
 $ oid.Head           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Humanbody      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Jaw            : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Lady           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Leg            : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Limb           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Lip            : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Longhair       : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Male           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Man            : num  0.00625 0.00569 0.01013 0.01031 NA ...
 $ oid.Marines        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Matador        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Militaryofficer: num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Militaryperson : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Model          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Mother         : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Moustache      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Mouth          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Muscle         : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Nail           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Neck           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Nose           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Orator         : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Organ          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Passenger      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Pedestrian     : num  NA NA NA 0.0744 NA ...
 $ oid.People         : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Person         : num  0.0206 0.0147 0.0201 0.1274 0.0139 ...
 $ oid.Pianist        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Player         : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Shoulder       : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Silhouette     : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Skin           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Smile          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Socialgroup    : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Soldier        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Speaker        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Student        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Stuntperformer : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Swimmer        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Team           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Thigh          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Toddler        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Toe            : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Tooth          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Troop          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Waste          : num  NA NA NA NA NA NA NA NA NA NA ...
 $ oid.Woman          : num  NA NA NA NA NA NA NA NA NA NA ...
  [list output truncated]
 - attr(*, ".internal.selfref")=<externalptr> 
> 
...