Your code is working just fine for me! In fact, it's the equivalent of the uncount() function. See below for an example of both ways of "expanding" your count data frame.
library(tidyverse)
# set up the data
co.df <- tribble(
~CO, ~CONum,
59099, 8239,
65957, 14420,
75794, 14964,
101313, 11176,
140610, 4282
)
# using base r
co.expanded <- co.df[rep(row.names(co.df), co.df$CONum), ]
# using tidyr
co.expanded2 <- co.df %>%
uncount(CONum, .remove = FALSE)
# check to see if both data frames are the same
identical(co.expanded, co.expanded2)
#> [1] TRUE
# make a histogram
co.expanded %>%
ggplot(aes(CO)) +
geom_histogram()
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Created on 2020-05-28 by the reprex package (v0.3.0)