From hp@ge@ @end|ng |rom |redhutch@org  Mon Nov  4 22:40:19 2019
From: hp@ge@ @end|ng |rom |redhutch@org (Pages, Herve)
Date: Mon, 4 Nov 2019 21:40:19 +0000
Subject: [Rd] Puzzled about a new method for "[".
In-Reply-To: <3ccb53ef-a0a7-0449-28f2-fad550b719bf@auckland.ac.nz>
References: <74a6cf10-3266-fef8-9ea0-0ba6d36db807@auckland.ac.nz>
 <CABdHhvFZ2VL27iJb_hZmMK1Tmxq1gZKu7np1fNjk9F2KM2ME8Q@mail.gmail.com>
 <3ccb53ef-a0a7-0449-28f2-fad550b719bf@auckland.ac.nz>
Message-ID: <92d3dc36-f1d8-875b-4250-2cbd70978402@fredhutch.org>

Hi Rolf,

On 11/4/19 12:28, Rolf Turner wrote:
> 
> On 5/11/19 3:41 AM, Hadley Wickham wrote:
> 
>> For what it's worth, I don't think this strategy can work in general,
>> because a class might have attributes that depend on its data/contents
>> (e.g. 
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__vctrs.r-2Dlib.org_articles_s3-2Dvector.html-23cached-2Dsum&d=DwICAg&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=pqLHzHYLUeyQnxA1K_XhSbKJql6r9wK1RXcDG2tuZ6s&s=kPUlNqBPr6j4lPvqkIj8w2Gl5JYGLqJ7ws6wH5tpGcw&e= 
>> ). I
>> don't think these are particularly common in practice, but it's
>> dangerous to assume that you can restore a class simply by restoring
>> its attributes after subsetting.
> 
> 
> You're probably right that there are lurking perils in general, but I am 
> not trying to "restore a class".? I simply want to *retain* attributes 
> of columns in a data frame.
> 
> * I have a data frame X
> * I attach attributes to certain of its columns;
>  ???? attr(X$melvin,"clyde") <- 42
>  ? (I *don't* change the class of X$melvin.)
> * I form a subset of X:
>  ??? Y <- X[1:100,3:10]
> * given that "melvin" is amongst columns 3 through 10 of X,
>  ??? I want Y$melvin to retain the attribute "clyde", i.e. I
>  ??? want attr(Y$melvin,"clyde") to return 42
> 
> There is almost surely a better approach than the one that I've chosen
> (isn't there always?) but it seems to work, and the perils certainly are
> not immediately apparent to me.

Maybe you've solved the problem for the columns that contain your 
objects but now you've introduced a potential problem for columns that 
contain objects with attributes whose value depend on content.

Hadley it right that restoring the original attributes of a vector (list 
or atomic) after subsetting is unsafe.

Best,
H.

> 
> cheers,
> 
> Rolf
> 

-- 
Herv? Pag?s

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages at fredhutch.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319


[Rd] Puzzled about a new method for "[".
Pages, Herve