私は例としてDF
ではなくdata
を使用しています。
を、それが基準のいずれかを含んでいる場合、指定した列の行列を作成し、そのマトリックステストの各要素のために:これが何をしているかの内訳については
DF[apply(apply(as.matrix(DF[c("Col1","Col2","Col3")]),
c(1,2), `%in%`, criteria),
1, any),]
。次に、その行列の各行について、いずれかの行要素がTRUE
かどうかを確認します。その場合は、元のデータセットの対応する行を保持します。ダミーデータと
スタート:例を通して作業する
DF <- data.frame(Col1=seq(1, by=2, length=10),
Col2=seq(3, by=3, length=10),
Col3=seq(7, by=1, length=10),
other=LETTERS[1:10])
> DF
Col1 Col2 Col3 other
1 1 3 7 A
2 3 6 8 B
3 5 9 9 C
4 7 12 10 D
5 9 15 11 E
6 11 18 12 F
7 13 21 13 G
8 15 24 14 H
9 17 27 15 I
10 19 30 16 J
のように見えたが、関心のちょうど列を引き出します。
> as.matrix(DF[c("Col1","Col2","Col3")])
Col1 Col2 Col3
[1,] 1 3 7
[2,] 3 6 8
[3,] 5 9 9
[4,] 7 12 10
[5,] 9 15 11
[6,] 11 18 12
[7,] 13 21 13
[8,] 15 24 14
[9,] 17 27 15
[10,] 19 30 16
空行の値のいずれかがインデックスに元のデータフレームその
> apply(apply(as.matrix(DF[c("Col1","Col2","Col3")]), c(1,2), `%in%`, criteria), 1, any)
[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
使用TRUEであれば基準
> apply(as.matrix(DF[c("Col1","Col2","Col3")]), c(1,2), `%in%`, criteria)
Col1 Col2 Col3
[1,] TRUE TRUE TRUE
[2,] TRUE TRUE TRUE
[3,] TRUE TRUE TRUE
[4,] TRUE FALSE TRUE
[5,] TRUE FALSE FALSE
[6,] FALSE FALSE FALSE
[7,] FALSE FALSE FALSE
[8,] FALSE FALSE FALSE
[9,] FALSE FALSE FALSE
[10,] FALSE FALSE FALSE
テストに対する各エントリー。
私はここ2つの
apply
の呼び出しが必要な場合はわからない
> DF[apply(apply(as.matrix(DF[c("Col1","Col2","Col3")]), c(1,2), `%in%`, criteria), 1, any),]
Col1 Col2 Col3 other
1 1 3 7 A
2 3 6 8 B
3 5 9 9 C
4 7 12 10 D
5 9 15 11 E
'subset'のマニュアルページは、標準的ではない評価を使用しているので、プログラマチックに注意することに注意してください。 – richiemorrisroe
ヘルプページでその注意を読んでいますが、意味がわかりません。なぜ「非標準的な評価」が問題になるのでしょうか?私のケースでは、私はちょうどいくつかの記述統計を作成するためにデータを分割しているので、私は "サブセット"が私のために問題を引き起こすとは思わない...しかし、それはどのような場合に問題を引き起こすだろうか?ありがとう。 – user1257313