AFAIK the intent of the designers of the data frame class was that rownames be 
unique and be useful for tracking the origins of records in data subsets. 
However, after a few merging operations the traceability becomes murky anyway 
and relational set theory avoids them. Neither data.table nor dplyr packages 
support them. In short, base R data import functions will create rownames on 
data frames so you should be able to depend on it as long as you stick with 
base R.

On January 3, 2019 9:39:44 AM PST, Benoit Galarneau 
<benoit.galarn...@polymtl.ca> 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?
>
>Benoit
>
>Jeff Newmiller <jdnew...@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.galarn...@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@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.

-- 
Sent from my phone. Please excuse my brevity.

______________________________________________
R-help@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.

Reply via email to