私はこれを何千回もやったことがありますが、私はここで何かを逃していることを知っています。私は別のものに一致する列によって私が持っているデータフレームをサブセット化したい。しかし、標準的なプロセスは動作していないようです。ここに私が持っているものがあります:Rで索引行がサブセット化されていない
a <- as.character(df1$col1)
b <- names(df2)
df2[(b %in% a), ]
最後の行は何もしていません。エラーはありませんが、b %in% a
ビットは確かにすべてTRUE
を返しません。
a[1:10]
"2.5D" "2D" "2DFighter" "3DPlatformer" "3DVision" "4PlayerLocal" "4X" "Abstract" "Action" "Action-Adventure"
b[1:10]
"appid" "2.5D" "2D" "4PlayerLocal" "6DOF" "Action" "Action-Adventure" "ActionRPG" "Adventure" "Anime"
b[1:10] %in% a[1:10]
FALSE TRUE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE
names(df2[(b %in% a), ])
"appid" "2.5D" "2D" "4PlayerLocal" "6DOF" "Action" "Action-Adventure" "ActionRPG" "Adventure" "Anime"
私が望むのは、df1がdf1の一致する列によってサブセットされることです。 %in%
と一致するベクトルを両方とも同じ文字フォーマットにしても、これが適切なアプローチだと言いたいと思います。しかし、円柱の部分集合は何もしていないようです。
ここで間違っていることはすぐに分かりますか?
は '[、as.character(DF1ます$ COL1)]' DF2とあなたはおそらくサブセット 'df2'べきではないのですか?あなたが行名をフィルタリングしている限り、 '%in%'テストは余計です。 – cmaher
'name(df2 [(b%in%a)、])'の ''コンマ 'は、 'names()'から返されたベクトルの** all **を与えています。 – Kevin
df2 [(b%in%a)、]の代わりに 'df2 [、(b%in%a)]'を試してみてください。カンマの違いに注意してください。つまり、行ではなく列をサブセット化しています。 – rosscova