R - Запись матрицы в выходной файл с заголовком и сноской - PullRequest
0 голосов
/ 28 августа 2018

В настоящее время я делаю очень нестандартную работу в R, где я заполняю большую матрицу значениями, которые вычисляются ранее. Я отправляю матрицу во внешний файл со следующим:

write.csv(m1, file = "OutputToExcel1.csv")

... где m1 - моя интересующая матрица, и я уже установил соответствующий рабочий каталог.

Я хотел бы дать ему описательное название и, возможно, сноску. В поиске решения, кажется, есть много команд, кроме write.csv.

Кто-нибудь может порекомендовать простой, стандартный и простой способ сделать это, кроме раковины ()?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Кажется, работает следующее, но это:

  • Помещает х в верхнем левом углу таблицы
  • Дает номер 1 перед заголовком & & 1006 *
  • Помещает заголовок в кавычки.

Я думаю, что следующее может быть "достаточно хорошим?"

setwd("Y:/Zach/")
myfile<-"DSummary.csv"
write.table("Title", myfile)
write.table(m1, myfile, sep=",", col.names=FALSE, append=TRUE)

Ниже приведено более подробное изложение вышеприведенного кода:

setwd("Y:/Zach/")
myfile<-"DSummary.csv"
write.table("Title1: n = ", myfile)
write.table(SchoolCnt, myfile, col.names=FALSE, append=TRUE)
write.table(". Is good enough", col.names=FALSE, append=TRUE)
write.table(m1, myfile, sep=",", col.names=FALSE, append=TRUE)

Так что способ, которым я разбиваю стандартные текстовые строки и переменные, очень небрежный. Любые предложения о том, как я могу их объединить, были бы великолепны!

0 голосов
/ 28 августа 2018

Если вы не хотите использовать sink(), вы можете использовать file() соединение и write.csv() между вашими writeLines() инструкциями, но похоже, что вам нужно обернуть write.csv() с capture.output(), что очень похож на sink().

Пример данных:

# matrix for reproducible example
data("Harman74.cor")

dest_file <- "OutputToExcel1.csv"

Похоже, хитрость заключается в использовании file(..., open='at') для поддержки нескольких добавлений:

if(file.exists(dest_file)) file.remove(dest_file) # need empty file before append

fileConn<-file(dest_file, open='at')
write("Descriptive Title", file = fileConn)
write( capture.output(write.csv(Harman74.cor)), 
       file = fileConn, 
       append=TRUE )
write("Helpful footnote", file = fileConn)
close(fileConn)

file.show(dest_file)

Если вы не совсем настроены против использования sink(), это довольно просто. Воспользовавшись поведением по умолчанию write.csv(), которое выводится на консоль, вы можете просто перенаправить этот вывод.

sink(dest_file)
writeLines("Descriptive Title")
cat(write.csv(Harman74.cor))
writeLines("Helpful footnote")
sink()

file.show(dest_file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...