[R] Accessing Data Frame
Duncan Murdoch
murdoch@dunc@n @ending from gm@il@com
Thu Jan 3 19:26:33 CET 2019
On 03/01/2019 12:39 p.m., Benoit Galarneau wrote:
> Thanks for the feedback.
> Point taken about the data.table package, I will take a look for sure.
> As I am new to the R programming, I'm exploring with the default
> libraries as a start.
>
> I have various options that works like this one:
>
> topCard <- deck[1,]
> #Remove card from deck using row name
> deck <- deck[!rownames(deck) %in% row.names(topCard),]
>
> Is it recommended/safe/good practice to work on items using the item names?
I forgot to address "safety". Your code above will only be safe if you
can guarantee that topCard is always produced by subsetting the deck.
If a user does something like
topCard <- data.frame(face = "queen", suit = "spades", value = 12)
then the rownames won't match, and removing topCard will remove the
wrong one.
Duncan Murdoch
>
> Benoit
>
> Jeff Newmiller <jdnewmil using dcn.davis.ca.us> a écrit :
>
>>> In my programmer's head, something similar to this should "work": ...
>>> deck[aCard]
>>
>> There are some people who agree with you... see the data.table
>> package, which can be made to behave like this.
>>
>> Keep in mind that the aCard data frame in general may have a
>> different set of column names or more than one row. (I would be
>> concerned that the logic of your application was inefficiently
>> designed if `deck` actually has the same columns as `aCard` as in
>> your example.) Others have pointed out that data frames are
>> typically combined using the merge function, which allows matching
>> columns to be specified very flexibly.
>>
>>
>> On January 3, 2019 6:50:22 AM PST, Benoit Galarneau
>> <benoit.galarneau using 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:
>>>
>>>> deck
>>> 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
>>>> topCard
>>> 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":
>>>> deck[10,]
>>> face suit value
>>> 10 four spades 4
>>>> aCard <- deck[10,]
>>>> aCard
>>> face suit value
>>> 10 four spades 4
>>>> deck[aCard]
>>> 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
>>>
>>> ______________________________________________
>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>
>> --
>> Sent from my phone. Please excuse my brevity.
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list