[R] Accessing Data Frame

Benoit Galarneau benoit@g@l@rne@u @ending from polymtl@c@
Thu Jan 3 18:39:44 CET 2019


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?

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.



More information about the R-help mailing list