Есть довольно много сообщений R с похожей темой, но они не предоставляют то, что я ищу.
Код Psuedo (это НЕ означает R) для того, что я хочу, это какследующим образом:
fileConn <- file("foo.txt")
for (i in 1:hiLimit) {
# extract elements from each nested and variable json element in an R list.
# paste elements into a comma separated list
write(pastedStuff,fileConn)
}
close(fileConn)
Теперь, если я пропущу 'file' и 'close' и просто использую 'cat' с именем файла и 'append = TRUE' следующим образом:
cat(paste(cve,vndr,pnm,vnmbr,vaffct,sep=","),file="outfile.txt",append=TRUE,sep="\n")
Я получаю то, что хочу.Но, по-видимому, это открытие и закрытие файла для каждого вызова (предположение ???).Чтобы избежать этого, нужно ускорить процесс.
Я не смог понять, как добиться результата с помощью метода в коде psuedo, который открывает и закрывает файл только один раз.Использование 'cat' или 'writeLines' просто дает мне последнюю строку в файле.
В порядке пояснения проблема, над которой я работаю, заключается в построении кадра данных с нуля строка за строкой.Мои временные параметры (см. Ниже) указывают, что, безусловно, самый быстрый способ, которым я могу это сделать, - это записать csv на диск и затем прочитать его обратно для создания кадра данных.Это безумие, но так оно и происходит.
## Just the loop without any attempt to collect parsed data into a dataframe
system.time(tmp <- affectsDetails(CVEbase,Affect))
user system elapsed
0.30 0.00 0.29
## Using rbind as in rslt<- rbind (rslt,c(stuff)) to build dataframe in the loop.
system.time(tmp <- affectsDetails(CVEbase,Affect))
user system elapsed
990.46 2.94 994.01
# Preallocate and insert list as per
# /3054937/sozdanie-r-kadra-dannyh-postrochno
system.time(tmp <- affectsDetails(CVEbase,Affect))
user system elapsed
1451.42 0.04 1452.37
# Write to a file with cat and read back the csv.
system.time(tmp <- affectsDetails(CVEbase,Affect))
user system elapsed
10.70 29.00 45.42
Любые предложения приветствуются!