11

データ フレーム DF が与えられた場合、DF を R オブジェクトとして保存しsave()、同僚と共有するのは簡単です。ただし、正確な列の定義を説明する別のドキュメントを添付する必要がある場合がよくあります。この情報をオブジェクトに含める (標準/一般的な) 方法はありますか?

DF 用のパッケージを作成した場合、組み込みのデータセットなど、これらすべての詳細を説明するヘルプ ページを作成できます。したがって、データと説明は常に利用可能であり、単一のパッケージ ソース ファイルを共有するだけで済みます。ただし、パッケージをビルドすることは、この問題を解決するにはやり過ぎのようです。(副次的な利点として、変更によってパッケージのバージョン番号が増加するため、データ セットのバージョン管理が可能になります)。

Hmisc パッケージには、label()オブジェクトに新しい属性を追加する関数が含まれています。新しい属性を伝播するために、data.frames のサブセット化/作成/etc に関連するメソッドが含まれています (属性は通常、ほとんどの関数で削除されるため)。

属性を設定することは、パッケージを作成することの明らかな代替手段であり、任意の名前の属性を追加できます。

簡単な例:

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

だから私の質問:

  1. 人々はオブジェクトに追加情報を含め (私の例はデータ フレームですが、すべての R オブジェクトに適用されます)、すべての関連情報を 1 か所に保持していますか?
  2. はいの場合、どのように?
  3. 不思議なことに、なぜstr()label 属性を出力するのですか? Hmisc パッケージが別の関数/メソッドをどこかに追加したと思いますが、その理由がわかりませんでした - 誰かがそのビットを説明できますか?
4

1 に答える 1

6

comment属性に格納されているテキストを割り当てたり取得したりできる基本関数があります。

(そして、ラベルを出力する理由についての質問を理解していませんstr。すべての (名前以外、クラス以外、行名以外) の属性を表示するべきではありませstrんか?)

于 2012-07-05T16:24:45.833 に答える