So, the obvious solution is not apply but lapply:
output_object <- lapply(files, myfunc, myparam = 3)
This also has the advantage of allowing you to use an 'anonymous' function if you want a slightly cleaner environment.
What I'm wondering, though, is why you want to? Is it an attempt to get away from perceived slowness in for loops? If so, you're not likely to see that great an improvement; people complaining "my for loop is slow" are normally complaining "I am trying a for-loop over a non-primitive data type" or "I am trying a for loop that iteratively adds to an object without a defined length". Those aren't the case here. The only thing I can think of that would improve your speed is to stop defining mf - simply call myfunc(files[i], myparam = 3).