Еще один способ, который еще не упоминался, - использование Function.prototype.bind
var funcs = {};
for (var i = 0; i < 3; i++) {
funcs[i] = function(x) {
console.log('My value: ' + x);
}.bind(this, i);
}
for (var j = 0; j < 3; j++) {
funcs[j]();
}
UPDATE
Как указано @squint и @mekdev, вы получаете лучшую производительность, сначала создавая функцию за пределами цикла, а затем привязывая результаты в цикле.
function log(x) {
console.log('My value: ' + x);
}
var funcs = [];
for (var i = 0; i < 3; i++) {
funcs[i] = log.bind(this, i);
}
for (var j = 0; j < 3; j++) {
funcs[j]();
}
Итак, я понял, что append = T работает с write.table - но write.table нуждается в переключателе sep, который будет использоваться, поэтому это работает:
write.table(myDF, "myDF.csv", sep = ",", col.names = T, append = T)
Другим обходным путем (с использованием cat) является то, что вы переносите свой кадр данных, а затем добавляете строку, содержащую только «\n», используя rbind, а затем преобразуете этот кадр данных в вектор (он будет иметь «\n» после каждой строки '), который теперь будет отображаться в вашем файле csv в качестве фрейма данных.
Ниже примера:
df <- rbind(t(df),"\n")
cat(c("",df),sep=",",append=TRUE)
Примечание: мое предположение заключается в том, что вы открыли соединение с файл с помощью раковины ( filepath / filename.csv ).
Если у вас достаточно памяти, наиболее эффективным способом является объединение всех их вместе, а затем запись в файл:
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)
}