[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