Я написал функцию, которая позволяет мне брать четыре столбца данных из буфера обмена, разделять их, добавлять дополнительный столбец, рекомбинировать его и экспортировать как текстовый файл.
xyztoinp <- function(x) {
x <- read.table(file="clipboard")
a <- x[,-1]
b <- x[,1]
c <- ifelse(b == "C", 6,
ifelse (b == "O", 8,ifelse (b == "H", 1, 3)))
x <- cbind(b,c,a)
write.table(x, file="IRCoutput", quote = FALSE,
sep = "\t", row.names = FALSE, col.names = FALSE)
}
У меня есть два вопроса: -
Можно ли создать файл с таблицей, которую я создал с помощью этой функции, так, чтобы таблица вставлялась в середину некоторого текста?
Например
text_text_text_text_text_text_text_
text_text_text_text_text_text_text_
Neatly formated table
text_text_text_text_text_text_text_
text_text_text_text_text_text_text_
Во-вторых, я попытался изменить функцию так, чтобы она принимала имя файла в качестве переменной; т.е. xyztoinp <- function(x, NewFileName) {
И т.д ... Но это не привело к выводу с новым именем файла; кто-нибудь знает, как это делается?
Вот мой рабочий код,
Xyztoinp <- функция (x) {
x <- read.table (file = "clipboard")
a <- x [, - 1]
b <- x [, 1]
c <- ifelse (b == "C", 6,
ifelse (b == "O", 8,
ifelse (b == "H", 1, 3)))
х <- cbind (b, c, a)
zz <- file ("NewFile.inp", "w")
cat ("текст", "текст",
"текст",
"",
"текст",
"текст",
"текст", file = zz, sep = "\ n")
write.table (x, file = zz, quote = FALSE,
sep = "\ t", row.names = FALSE, col.names = FALSE)
cat ("текст", file = zz)
закрыть (zz)
}
Всем спасибо, особенно @Greg. ps Невозможно изменить имя файла в функции, но я доволен вышесказанным.
1 ответ
Основная причина, по которой люди хотят, чтобы таблицы (или графики, или выходные данные, или ...) были вставлены в текст, заключается в том, чтобы создать какой-то автоматический отчет (если это не ваш случай, то, пожалуйста, дайте более подробную информацию, чтобы мы могли ответить на фактический вопрос ).
Для создания автоматических отчетов с красиво оформленными таблицами (и другими вещами) лучший подход - создать шаблон и обработать его для создания отчета. Посмотрите на пакет knitr для получения подробной информации о том, как это сделать (вы также можете использовать пакет odfweave, функцию sweave или другие, но knitr, вероятно, является наиболее общим).
Другой вариант, если вы не хотите предварительно создавать шаблон отчета, - это пакет pander.
Переход на pander или knitr может решить и ваш второй вопрос, но если нет, то нам нужно будет посмотреть, что вы пробовали и что случилось, чтобы узнать, почему это не сработало и как помочь.
write.table
с соединением для координаты, затем снова cat
. Использование открытого соединения (см. ?file
) позволит различным функциям записывать в один и тот же файл без перезаписи.
pander
! Для записи: при работе с "шаблонами отчетов" другой наш пакет R, названный rapport, может быть лучшим вариантом.
Похожие вопросы
Новые вопросы
r
R — это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, используйте минимально воспроизводимые примеры, которые другие могут запустить с помощью копирования и вставки. Показать желаемый результат полностью. Используйте dput() для данных и укажите все небазовые пакеты с помощью library(). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. Для вопросов по статистике используйте https://stats.stackexchange.com.