Hi Benoit,
You can select rows from deck matched in aCard using
merge(deck, aCard)
Selecting rows that don't match is bit more difficult. You could do
something like
isin <- apply(mapply(function(x, y) x %in% y, deck, topCard),
1,
all)
deck[!isin, ]
perhaps.
Alternatively, you can use anti_join from the dplyr package:
library(dplyr)
anti_join(deck, topCard)
Best,
Ista
On Thu, Jan 3, 2019 at 10:38 AM Benoit Galarneau
<benoit.galarneau at polymtl.ca> wrote:
Hi everyone,
I'm new to the R world.
Probably a newbie question but I am stuck with some concept with data frame.
I am following some examples in the "Hands-On Programming with R".
In short, how can I access/filter items in a data frame using a variable.
One example consists of manipulating elements from a deck of card:
face suit value
1 king spades 13
2 queen spades 12
3 jack spades 11
4 ten spades 10
etc.
Let's say I want to remove or filter out the first card. I know I
could do deck[-1].
But let's say I have: topCard <- deck[1,]
topCard is then a list of 3 elements
face suit value
1 king spades 13
My question is the following, how can I remove or filter out the deck
using the topCard variable.
In my programmer's head, something similar to this should "work":
face suit value
10 four spades 4
face suit value
10 four spades 4
Error in `[.default`(deck, aCard) : invalid subscript type 'list'
Wihout having to specify all elements in the logical tests.
deck[deck$face == aCard$face & deck$suit == aCard$suit & deck$value ==
aCard$value,]
face suit value
10 four spades 4