2

数値列PYを含むデータセットwを使用すると、次のことができます。

nrow(subset(w, PY==50))

そして正しい答えを得る。ただし、関数を作成しようとすると:

fxn <- function(dataset, fac, lev){nrow(subset(dataset, fac==lev))}

そして走る

fxn(w, PY, 50)

次のエラーが表示されます。

eval(expr、envir、enclos)のエラー:オブジェクト 'PY'が見つかりません

私は何を間違っていますか?ありがとう。

4

1 に答える 1

5

のドキュメントからsubset:

警告 これは、対話的に使用するための便利な関数です。プログラミングでは、[ のような標準のサブセット化関数を使用することをお勧めします。特に、引数サブセットの非標準的な評価は、予期しない結果をもたらす可能性があります。

このややあいまいな警告は、ここで非常によく説明されています。

最後の言葉は、特に、あなたがしようとしているようなラッパーを介してではなく、interactivelysubset以外は使用できないということです。代わりに次を使用する必要があります。[

fxn <- function(dataset, fac, lev) nrow(dataset[dataset[fac] == lev, , drop = FALSE])

または単に:

fxn <- function(dataset, fac, lev) sum(dataset[fac] == lev)
于 2012-09-16T01:52:26.413 に答える