Если у вас достаточно памяти, наиболее эффективным способом является объединение всех их вместе, а затем запись в файл:
df <- cbind(df1, df2, df3)
write.csv(df, "spam.csv")
В противном случае вы можете использовать аргумент append в write.csv
:
dfs <- c(df1, df2, df3)
for (df in dfs){
write.csv(df, "eggs.csv", append = TRUE)
}
От человека fdopen:
Дескриптор файла не является dup’ed и будет закрыт, когда поток, созданный fdopen (), закрывается
Таким образом, я просто использовал бы fclose (), который также закрывает базовый дескриптор файла. Я не знаю, необходимо ли завершение работы (), также.
Из http://opengroup.org/onlinepubs/007908775/xsh/fclose.html
fclose () функция выполнит завершение () на дескрипторе файла, который связан с потоком, на который указывает поток.
При обертывании сокета в поток, вероятно, больше не имеет смысл завершать работу (), по крайней мере, не сбрасывая поток сначала. Но я не поклянусь этому, потому что я не знаю, что нет никакого использования, где Вы хотели бы завершить работу (), а не просто закрыться ().
У Вас есть 2 вещи здесь, необходимо вымыться: поток, представленный FILE
и дескриптор файла представлен сокетом. Необходимо закрыть поток сначала, затем дескриптор файла. Так, в целом Вы должны будете fclose()
любой FILE
объекты, затем close()
любые дескрипторы файлов.
Лично я никогда не использовал shutdown()
когда я хочу к очистке после меня, таким образом, я не могу сказать.
Другие правильно указали на это fdclose()
также закроет базовый дескриптор файла, и начиная с вызова close()
на близком дескрипторе файла приведет к ошибке, в этом случае Вам только нужно fdclose()
.