Функция преобразования ошибок во весь фрейм данных («длинная длина объекта не кратна короткой длине объекта») - PullRequest
0 голосов
/ 30 января 2020

Итак, я пытаюсь отследить стрельбу по полосам в баскетбольных играх, и у меня есть этот великолепный набор данных со всем, что мне нужно. Я написал эту функцию, которая будет принимать идентификационный номер игрока и дату игры и возвращать битовую строку для промахов и промахов по порядку. Однако, когда я пытаюсь изменить эту функцию на фрейм данных, это выдает ошибку, указанную в заголовке. Что я делаю неправильно? Вот функция:

#FUNCTION
get_make_miss_vec <- function(PID, GD){
   #FILTER THE DATA BY PLAYER ID and BY THE DATE OF THE GAME then arrange by EVENTTIME
   data_player_per_game <- shots_master %>% filter(PLAYER_ID == PID) %>% filter(GAME_DATE == GD) %>%
               arrange(EVENTTIME)
   # Create a vector to track makes and misses
    x <- c()
   # Get length of data frame with all shots from one game
    y<-nrow(data_player_per_game)
    for (i in 1:y){
        #Get the make/miss flag at the row
       row <- data_player_per_game[i,][19]
        #Make sure its numeric
       val <- as.numeric(row)
        #Append it onto the vector
       x <- c(x, val)
   } 
   #Merge the vector into one string
   string_ret <- paste(x,sep="",collapse="")
   # And return it
   return(string_ret)
}

Вот пример, где это работает:

get_make_miss_vec(977, 20151028)

И это вывод:

'010000101010001000011100'

А вот пример, где это терпит неудачу:

data <- shots_master %>% filter(PLAYER_ID == 977) %>% 
                arrange(GAME_DATE, EVENTTIME)
game_vec <- data %>% group_by(GAME_DATE) %>% summarize(n=n()) 
game_vec %>% mutate(shot_string = get_make_miss_vec(977, as.numeric(GAME_DATE)))

С этой ошибкой:

Warning message in GAME_DATE == GD:
“longer object length is not a multiple of shorter object length”

И этот вывод:

GAME_DATE   n   shot_string
20151028    24  0001000001101001000
20151030    12  0001000001101001000
20151101    15  0001000001101001000
20151103    11  0001000001101001000
20151108    19  0001000001101001000
20151115    19  0001000001101001000
20151120    13  0001000001101001000
20151122    22  0001000001101001000
20151124    14  0001000001101001000
20151128    20  0001000001101001000
20151129    20  0001000001101001000
20151201    24  0001000001101001000
20151202    24  0001000001101001000
20151206    15  0001000001101001000
20151207    16  0001000001101001000
20151209    13  0001000001101001000
20151211    12  0001000001101001000
20151212    16  0001000001101001000
20151215    14  0001000001101001000
20151217    15  0001000001101001000
20151222    22  0001000001101001000
20151223    22  0001000001101001000
20151225    10  0001000001101001000
20151227    15  0001000001101001000
20151228    20  0001000001101001000
20151230    18  0001000001101001000
20160107    19  0001000001101001000
20160112    9   0001000001101001000
20160114    14  0001000001101001000
20160122    9   0001000001101001000
20160123    8   0001000001101001000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...