The problem likely comes from when you read in moviedata. You seem to expect the "screens" column to be a numeric vector, but it's a factor. That's the default class for strings read by base R's reading functions (read.table and the like). So something's messing with how it's being read.
Without seeing the data file and knowing everything you're trying to do, I can't recommend a "best" way. But some solutions are to use the colClasses argument in the reader function or coercing the "screens" column to numeric after reading it in.
Also, if you want to replace values that are missing or blank, you need to use that operator:
moviedata$screens[is.na(moviedata$budget) | moviedata$budget==""] <- 0