What you are talking about is a “spatial connection” (or “spatial intersection” or “overlap”). This is pretty simple using the over function from the sp package.
Here is an example.
First, let's download and import the polygon shape file from around the world.
download.file(paste0('http://www.naturalearthdata.com/http//', 'www.naturalearthdata.com/download/110m/cultural/', 'ne_110m_admin_0_countries.zip'), f <- tempfile()) unzip(f, exdir=tempdir()) library(rgdal) countries <- readOGR(tempdir(), 'ne_110m_admin_0_countries')
Now we will create some random coordinate data that falls within the boundaries of the polygon shape file. Then we define the x and y columns as coordinates and assign the same CRS as for the polygons (although this may not be the case for your data, remember to assign the correct coordinate systems).
pts <- data.frame(x=runif(10, -180, 180), y=runif(10, -90, 90), VAR1=LETTERS[1:10]) coordinates(pts) <- ~x+y

Now we can perform a spatial overlay:
over(pts, countries)$admin # [1] <NA> <NA> Turkey <NA> # [5] Macedonia <NA> China Argentina # [9] <NA> Canada # 177 Levels: Afghanistan Albania ... Zimbabwe
Note that in this case some of the random points fell in the ocean (i.e., outside the polygons). When they intersect with a polygon object, these points return NA.
Now we cbind required pts attribute:
cbind.data.frame(pts, country=over(pts, countries)$admin) # xy VAR1 country # 1 -52.59404 -37.422879 A <NA> # 2 -33.88867 -40.194482 B <NA> # 3 38.84383 37.272460 C Turkey # 4 -84.04949 7.118878 D <NA> # 5 20.98272 40.920470 E Macedonia # 6 -155.32951 -37.612497 F <NA> # 7 99.40166 38.630049 G China # 8 -61.84025 -27.412885 H Argentina # 9 -37.65287 -3.666080 I <NA> # 10 -112.81197 59.959475 J Canada