Mam listę kategorii i mogę uzyskać liczbę aplikacji dla każdej kategorii na tej liście. Chciałbym znaleźć 10 kategorii, które mają najbardziej aplikacje. Napisałem ten kod, który teraz nie działa, otrzymuję ten błąd:

 Error in if (for (topCategoryNb in top10Nb) { : 
  argument is of length zero

Zakładam, że to dlatego, że nie można umieścić w pętli, jako argument w oświadczeniu IS IF. Czy jest lepszy sposób na zrobienie tego, co próbuję zrobić? Jeśli nie, jak mogę naprawić mój kod?

Oto kod:

allCategories <- list("MEDICAL", "MAPS_AND_NAVIGATION", "NEWS_AND_MAGAZINES", "VIDEO_PLAYERS", "VIDEO_PLAYERS", 
                     "SOCIAL", "SHOPPING", "PHOTOGRAPHY", "SPORTS", "TRAVEL_AND_LOCAL", "TOOLS", "PERSONALIZATION",
                     "HEALTH_AND_FITNESS", "HOUSE_AND_HOME", "EVENTS")
    top10 <- list()
    top10Nb <- list()
    for(category in allCategories){
      currentNb<- numberAppPerCategories(category,0)
      print(category)
      print(currentNb)
      if(
        for(topCategoryNb in top10Nb){topCategoryNb<currentNb}
      ){
        top10 <- c(top10, category)
      }
      allCategories[- category]  
    }

Funkcja NumberappePermatecories zwracają liczbę aplikacji Kategoria. Na przykład, dla kategorii "Medycyna" otrzymamy: (mamy 0 jako drugi argument, ponieważ jest to punkt wyjścia liczenia w pętli, która jest w funkcji, ale możesz to zignorować)

> numberAppPerCategories("MEDICAL",0)
[1] 277
0
soffamumie 19 październik 2020, 02:29

1 odpowiedź

Najlepsza odpowiedź

Bez przykładowych danych, aby to przetestować, nie jest jasne, co próbuje zrobić ten kod. Jeśli rozumiem prawidłowo, tak naprawdę nie potrzebujesz for lub if pętli. Prawdopodobnie możesz uzyskać liczenia dla wszystkich kategorii

counts <- sapply(allCategories, numberAppPerCategories, 0)

A potem możesz zdobyć 10 najlepszych

top10  <- head(allCategories[order(-counts)], 10)
1
MrFlick 19 październik 2020, 00:05