Храните каждую сгенерированную строку непосредственно в csv-файле [дубликат]

Еще один способ, который еще не упоминался, - использование 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]();
}

3
задан Kash 11 June 2016 в 09:45
поделиться

3 ответа

Итак, я понял, что append = T работает с write.table - но write.table нуждается в переключателе sep, который будет использоваться, поэтому это работает:

write.table(myDF, "myDF.csv", sep = ",", col.names = T, append = T)
7
ответ дан Kash 25 August 2018 в 23:19
поделиться

Другим обходным путем (с использованием cat) является то, что вы переносите свой кадр данных, а затем добавляете строку, содержащую только «\n», используя rbind, а затем преобразуете этот кадр данных в вектор (он будет иметь «\n» после каждой строки '), который теперь будет отображаться в вашем файле csv в качестве фрейма данных.

Ниже примера:

df <- rbind(t(df),"\n")
cat(c("",df),sep=",",append=TRUE)

Примечание: мое предположение заключается в том, что вы открыли соединение с файл с помощью раковины ( filepath / filename.csv ).

0
ответ дан Max 25 August 2018 в 23:19
поделиться

Если у вас достаточно памяти, наиболее эффективным способом является объединение всех их вместе, а затем запись в файл:

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)
}
-1
ответ дан tkmckenzie 25 August 2018 в 23:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: