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: hpa...@fredhutch.org Phone: (206) 667-5791 Fax: (206) 667-1319 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel