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