If you have enough memory, the most efficient way is to bind them all together then write to file:
df <- cbind(df1, df2, df3)
write.csv(df, "spam.csv")
Otherwise, you can use the append argument in write.csv:
dfs <- c(df1, df2, df3)
for (df in dfs){
write.csv(df, "eggs.csv", append = TRUE)
}