目的は、ユーザ定義関数の(オプションの)引数として「サブセット式」(論理ベクトルではない)を使用し、それを使ってデータフレームのサブセット。`subset()`を関数内で動作させる
x <- data.frame(a=1, b=gl(2,5))
f <- function(data, subset) {
if (!missing(subset))
data <- subset(data, subset)
data
}
上記のコードは動作しませんし、どちらもsubset
が供給されたときに、私はエラーを取得する両方のケースで
f <- function(data, subset) {
if (!missing(subset))
data <- data[with(data, subset), ]
data
}
を行います。
> f(x, b == 2)
Error in f(x, b == 2) (from frame.r!322341dM#2) : object 'b' not found
所望の出力:
> f(x)
a b
1 1 1
2 1 1
3 1 1
4 1 1
5 1 1
6 1 2
7 1 2
8 1 2
9 1 2
10 1 2
> f(x, b == 2)
a b
6 1 2
7 1 2
8 1 2
9 1 2
10 1 2
'x $ b == 2'が必要です。 – G5W
bは変数ではなく、xの列なので、Rが理解できるように関数を入力する(または関数に貼り付ける)必要があります。 G5Wのように、または3つの属性、データフレーム、列名、値を取って関数に貼り付け、必要な出力を抽出する機能を設定することもできます。 – sconfluentus