I think the problem that technocrat runs into is because of the install.packages() call within the code:
install.packages('Matching')
install.packages('rgenoud')
install.packages('foreign')
library(Matching)
library(rgenoud)
library(foreign)
This should be avoided: it's up to the user to decide when and how to install packages. What you can do as a developer is add these packages to the Imports: field in the DESCRIPTION file. See here for details.
If I remove these installation lines and install your package, I can call ExpoMatch_function(), the function is found. You didn't copy the error message in your post, so I don't know what function was not found in your tests. Re-running your code, I get this error message:
Error in GenMatch(Tr = Tr, X = X, pop.size = pop.size * 50, max.generations = max.generations * :
could not find function "GenMatch"
This is because the package {GenMatch} was not loaded: you do have a library(GenMatch) call in your R file, but not inside your function. That means it is run when you install the package, but not when you load it!
So there are a few ways to go. You could have a library() call in your function body, that is not a good idea, and not really useful here (note: on my computer, .packages() gives an empty string so won't work, in any case that is not the ideal approach). I would suggest instead using Matching::GenMatch() to specify the package. You can find other approaches here. And same thing for rgenoud::genoud(). Running that on my computer, it seems to work (although as the example took too long to run, I didn't let it finish).
Oh, and if it wasn't clear from my links, I can't recommend enough to read at least the first 2 chapters of the r-pkgs book.