Как экспортировать определение объекта R в обычный текст, чтобы другие могли его воссоздать?
Скажем, у вас есть эти данные в R, и вы хотите опубликовать вопрос о stackoverflow. Чтобы другие могли вам помочь, было бы неплохо, если бы они могли иметь копию вашего объекта (dataframe, vector и т.д.) Для работы.
Скажем, ваши данные находятся в кадре данных, называемом site.datap >
> 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