Как экспортировать определение объекта R в обычный текст, чтобы другие могли его воссоздать?

Скажем, у вас есть эти данные в R, и вы хотите опубликовать вопрос о stackoverflow. Чтобы другие могли вам помочь, было бы неплохо, если бы они могли иметь копию вашего объекта (dataframe, vector и т.д.) Для работы.

Скажем, ваши данные находятся в кадре данных, называемом site.data​​p >

> site.data
    site year     peak
1  ALBEN    5 101529.6
2  ALBEN   10 117483.4
3  ALBEN   20 132960.9
8  ALDER    5   6561.3
9  ALDER   10   7897.1
10 ALDER   20   9208.1
15 AMERI    5  43656.5
16 AMERI   10  51475.3
17 AMERI   20  58854.4

Как вы его упаковываете, чтобы пользователи могли воссоздать данные точно так же, как у вас есть?

Вы хотите сделать это, не загрузив текстовый файл и импортируйте его.

(Примечание: эти данные подпадают под пример блога REvolutions)

Ответ 1

Команда dput записывает представление ASCII. Если вместо имени файла вы поместите "", он будет записывать его на консоль

> dput(site.data,"")
structure(list(site = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 
3L, 3L), .Label = c("ALBEN", "ALDER", "AMERI"), class = "factor"), 
    year = c(5L, 10L, 20L, 5L, 10L, 20L, 5L, 10L, 20L), peak = c(101529.6, 
    117483.4, 132960.9, 6561.3, 7897.1, 9208.1, 43656.5, 51475.3, 
    58854.4)), .Names = c("site", "year", "peak"), row.names = c(1L, 
2L, 3L, 8L, 9L, 10L, 15L, 16L, 17L), class = "data.frame")

Просто скопируйте структуру и поместите ее после "site.data =" в вашем примере кода, и люди смогут воссоздать фрейм данных точно так же, как и у вас.

Ответ 2

Собственно, в вашем первоначальном примере способ, которым вы вставляли ваши данные в формате столбца, работает очень хорошо. Я просто скопировал ваш текст с веб-страницы и сделал это (используя OS X, поэтому у меня есть хорошая команда "paste" ):

> site.data <- read.table(pipe("pbpaste"))

Для данных игрушек, подобных тому, что есть в качестве тестового примера, это часто лучший подход. Чтобы быть более точным, dput() хорош, как говорит dggoldst.

Ответ 3

Другой способ, подобно Кену, использует буфер обмена (на окнах и, возможно, на Linux). Я бы скопировал ваш код и запустил

> site.data <- read.table("clipboard", header=T)
> site.data
    site year     peak
1  ALBEN    5 101529.6
2  ALBEN   10 117483.4
3  ALBEN   20 132960.9
8  ALDER    5   6561.3
9  ALDER   10   7897.1
10 ALDER   20   9208.1
15 AMERI    5  43656.5
16 AMERI   10  51475.3
17 AMERI   20  58854.4