Create a raster with georeferenced information in R

The raster package lets you create arbitrary rasters (size, projection) or use existing objects, like matrices; you can then assign projections & extents . Your image() function takes a matrix argument which can be used directly:

library(raster)    
## Create a matrix with random data & use image()
xy <- matrix(rnorm(400),20,20)
image(xy)

# Turn the matrix into a raster
rast <- raster(xy)
# Give it lat/lon coords for 36-37°E, 3-2°S
extent(rast) <- c(36,37,-3,-2)
# ... and assign a projection
projection(rast) <- CRS("+proj=longlat +datum=WGS84")
plot(rast)

You can then use writeRaster() with any number of formats, e.g.

writeRaster(rast, "~/myraster.asc", format = "ascii")

There are a number of different ways, but taking a stab that you want to use open-source tools on Windows I can suggest 3 options:

  1. Use gdal_translate tool in GDAL (open-source geo-raster manipulation library). You probably need the -gcp pixel line easting northing elevation parameter where pixel and line is x / y on the raster (http://www.gdal.org/gdal_datamodel.html) and easting / northing the geographic coordinates. You'll also have to specify a projection with -a_srs srs_def
  2. Use the r bindings to GDAL and do the same thing
  3. An easier "GUI" way might be to follow this tutorial and use QGIS with GDAL. The disadvantage of this is you have to set up both QGIS and GDAL if you haven't already.

I would look carefully at the dependencies of each bit of software you need before going down whichever route you choose.