0

strR で関数を使用しようとするとエラーが発生します。
データは次のとおりです。

> dput(data1)
data1<- structure(list(Year = 1990:2010, Counts = c(1401L, 1290L, 1168L,1260L, 1252L, 1381L, 1330L, 1275L, 1235L, 1248L, 1237L, 1206L, 1175L, 1172L, 1055L, 1030L, 1002L, 987L, 915L, 806L, 868L)), .Names = c("Year", "Counts"), class = "data.frame", row.names = c(NA, -21L))

strR が次のエラーを表示している理由classがわかりませんdata.frame

> class(data1)
[1] "data.frame"
> str(data1)
Error in str(data1) : 
  unable to find a non-generic version of function "str"

Windows 用の R バージョン 2.15.0 (2012-03-30) を使用しています。

どんな助けでも大歓迎です。

編集: クリーンなRセッションで機能しました。しかし、なぜこのような問題が発生するのでしょうか。これを知ることは可能ですか?

4

1 に答える 1

4

よし、噛むぞ。

なぜこのような問題が発生するのでしょうか。

オブジェクト (つまり、関数、変数) のマスキングは、R コードのエラーまたはバグの最も一般的な原因の 1 つです。なぜこれが起こることができますか?

R のパーサーには次の場所にある予約語のリストがあります?Reserved

R のパーサーの予約語は次のとおりです。

if else repeat while function for in next break

TRUE FALSE NULL Inf NaN NA NA_integer_ NA_real_ NA_complex_ NA_character_

...およびなどは..1..2囲んでいる関数から渡された引数を参照するために使用されます。

つまり、ユーザーはこれらの名前の値を再割り当てできません。しかし、それ以外のほとんどすべて (構文的に有効であると仮定して) は範囲内にあります。

たとえば、data実際にはutilsパッケージの関数であるため、一般的にデータ フレームに名前を付けないことをお勧めしますdata。関数をマスクすると、関数 dataに依存するすべてのコードが停止します。

正直なところ、dfF分布の分布関数を計算する関数ですが、データフレームによく使用します。(F 分布関数はあまり必要ありませんが、それでも行うべきではありません。)

この問題の特に悪質な例は、設定に関する R ユーザーの間でよくあるジョークです。

T <- FALSE
F <- TRUE

多くの人は怠け者でforTFforTRUEを使用していますが、これが本当に本当に悪い考えFALSEである理由が正確にわかりました。(誰かがorに別の値を割り当てようとしている可能性はかなり高いです。)TF

実際、パッケージをロードするたびに、一連の警告が表示される可能性があります。R は、そのパッケージをロードすることで、関数の束が一般的な名前を持っているためにマスクされたことを示しています。

これが起こったことをどのように知ることができますか?

これははるかに簡単です。ベンがコメントで言ったように、この種のものは を使用して識別しますconflicts()

于 2012-05-03T00:05:28.750 に答える