Существует ли стандартный способ документирования фреймов данных?

Учитывая фрейм данных, DF, просто сохранить DF как объект R с помощью save() и поделиться с коллегами. Однако часто необходимо приложить отдельный документ, объясняющий точные определения столбцов. Есть ли (стандартный/общий) способ включить эту информацию в объект?

Если мы построили пакет для DF, мы могли бы создать страницу справки, объясняющую все эти детали, такие как встроенные наборы данных. Таким образом, данные и объяснения всегда будут доступны, и нам нужно использовать только один исходный файл пакета. Тем не менее, создание пакета кажется чрезмерным для этой проблемы. (В качестве побочного преимущества мы получили бы контроль версий в наборе данных, так как изменения увеличивали бы номер версии пакета).

Пакет Hmisc включает функцию label(), которая добавляет новый атрибут к объектам. Связанные методы для подмножества/создания/etc data.frames включены для распространения нового атрибута (поскольку в большинстве функций атрибуты вообще удаляются).

Атрибуты настройки являются очевидной альтернативой написанию пакета, и мы можем добавлять произвольно названные атрибуты.

Краткий пример:

DF <-
structure(list(Gender = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("Female",
"Male"), class = "factor"), Date = structure(c(15518, 15524,
15518, 15526, 15517, 15524), class = "Date"), Dose = c(15, 10,
11, 11, 12, 14), Reaction = c(7.97755180189919, 11.7033586194156,
9.959784869289, 6.0170950790238, 1.92480908119655, 7.70265419443507
)), .Names = c("Gender", "Date", "Dose", "Reaction"), row.names = c(NA,
-6L), class = "data.frame")

library(Hmisc)

label(DF$Reaction) <- "Time to react to eye-dot test, in seconds, recorded electronically"

# or we could set our own attributes

attr(DF$Date,"Description") <- "Date of experiment. Note, results are collected weekly from test centres"

# Since Hmisc adds class "labelled" to data.frame and impelments
# the appropriate methods, the formed is retained on subsetting 
# (not that this is feature is wanted)

DF.mini <- DF[ DF$Gender=="Male",]


# compare
str(DF)      # Not quite sure why str() prints the label attribute but not the Desciptions
str(DF.mini) # we retain the label attribute

attributes(DF$Date)
attributes(DF.mini$Date) # we lose the Description attribute

Итак, мои вопросы:

  • Люди включают дополнительную информацию со своими объектами (мой пример - это кадр данных, но относится ко всем объектам R), сохраняя всю соответствующую информацию в одном месте?
  • Если да, то как?
  • Любопытно, почему str() печатает атрибут метки, я считаю, что пакет Hmisc добавил где-то еще одну функцию/метод, но не мог понять, почему - может кто-нибудь объяснить этот бит?

Ответ 1

Существует базовая функция: comment, которая может назначать или извлекать текст, который хранится в атрибуте.

(И я не понимаю вопроса о том, почему str печатает метку. Должны ли отображаться все атрибуты (non-name, non-class, non-rowname) с помощью str?)