Apply zip_distance to every row

151 views Asked by At

I have a dataframe with two columns, zip and CSZip. I am trying to apply a function to each row using:

dist <- apply(vf, 1, zip_distance(zip, CSZip, lonlat = TRUE, units = "meters"))

But I get this error:

Error in as.character(zipcode_a) : 
  cannot coerce type 'closure' to vector of type 'character'

zip_distance is from the ZipCodeR package.

This is what 5 rows of vf looks like:

zip CSZip
91723 90048
90814 90048
91604 90048
90805 90048
90255 90048
2

There are 2 answers

0
Dave2e On BEST ANSWER

The ZipcodeR is has some funky behavior. Sometimes it is just easier to use a for loop:

library(zipcodeR)

vf <- read.table(header=TRUE, text="zip CSZip
91723   90048
90814   90048
91604   90048
90805   90048
90255   90048")


for(i in 1:nrow(vf)) {
   vf$dist[i] <- zip_distance(vf$zip[i], vf$CSZip[i], lonlat = TRUE, units = "meters")$distance
}
vf
10
Abdur Rohman On

Maybe this is what you need:

dist <- mapply(function(x,y) zip_distance(x,y, lonlat = TRUE, units = "meters"), vf$zip, vf$CSZip)