[R] Stata/Rstudio evil attributes

William Michels wjm1 @end|ng |rom c@@@co|umb|@@edu
Sat Apr 10 18:20:11 CEST 2021


Hi Roger,

You could look at the attributes() function in base-R. See:

> ?attributes

>From the help-page:

> ## strip an object's attributes:
> attributes(x) <- NULL

HTH, Bill.

W. Michels, Ph.D.



On Sat, Apr 10, 2021 at 4:20 AM Koenker, Roger W <rkoenker using illinois.edu> wrote:
>
> Wolfgang,
>
> Thanks, this is _extremely_ helpful.
>
> Roger
>
> > On Apr 10, 2021, at 11:59 AM, Viechtbauer, Wolfgang (SP) <wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
> >
> > Dear Roger,
> >
> > The problem is this. qss() looks like this:
> >
> > if (is.matrix(x)) {
> >   [...]
> > }
> > if (is.vector(x)) {
> >   [...]
> > }
> > qss
> >
> > Now let's check these if() statements:
> > is.vector(B$x) # TRUE
> > is.vector(D$x) # FALSE
> > is.matrix(B$x) # FALSE
> > is.matrix(D$x) # FALSE
> >
> > is.vector(D$x) being FALSE may be surprising, but see ?is.vector: "is.vector returns TRUE if x is a vector of the specified mode having no attributes other than names. It returns FALSE otherwise." And as D$x shows, this vector has additional attributes.
> >
> > So, with 'D', qss() returns the qss function (c.f., qss(B$x) and qss(D$x)) which makes no sense. So, the internal logic in qss() needs to be fixed.
> >
> >> In accordance with the usual R-help etiquette I first tried to contact the
> >> maintainer of the haven package, i.e. RStudio, which elicited the response: "since
> >> the error is occurring outside RStudio we’re not responsible, so try Stack
> >> Overflow".  This is pretty much what I would have expected from the capitalist
> >> running dogs they are.  Admittedly, the error is probably due to some unforeseen
> >
> > This kind of bashing is really silly. Can you tell us again how much you paid for the use of the haven package?
> >
> > Best,
> > Wolfgang
> >
> >> -----Original Message-----
> >> From: R-help [mailto:r-help-bounces using r-project.org] On Behalf Of Koenker, Roger W
> >> Sent: Saturday, 10 April, 2021 11:26
> >> To: r-help
> >> Subject: [R] Stata/Rstudio evil attributes
> >>
> >> As shown in the reproducible example below, I used the RStudio function haven() to
> >> read a Stata .dta file, and then tried to do some fitting with the resulting
> >> data.frame.  This produced an error from my fitting function rqss() in the package
> >> quantreg.  After a bit of frustrated cursing, I converted the data.frame, D, to a
> >> matrix A, and thence back to a data.frame B, and tried again, which worked as
> >> expected.  The conversion removed the attributes of D.  My question is:  why were
> >> the attributes inhibiting the fitting?
> >>
> >> In accordance with the usual R-help etiquette I first tried to contact the
> >> maintainer of the haven package, i.e. RStudio, which elicited the response: "since
> >> the error is occurring outside RStudio we’re not responsible, so try Stack
> >> Overflow".  This is pretty much what I would have expected from the capitalist
> >> running dogs they are.  Admittedly, the error is probably due to some unforeseen
> >> infelicity in my rqss() coding, but it does seem odd that attributes could have
> >> such a drastic  effect.  I would be most grateful for any insight the R commune
> >> might offer.
> >>
> >> #require(haven) # for reading dta file
> >> #Ddta <- read_dta(“foo.dta")
> >> #D <- with(Ddta, data.frame(y = access_merg, x = meannets_allhh, z = meanhh))
> >> #save(D, file = "D.Rda")
> >> con <- url("http://www.econ.uiuc.edu/~roger/research/data/D.Rda")
> >> load(con)
> >>
> >> # If I purge the Stata attributes in D:
> >> A <- as.matrix(D)
> >> B <- as.data.frame(A)
> >>
> >> # This works:
> >> with(D,plot(x, y, cex = .5, col = "grey"))
> >> taus <- 1:4/5
> >> require(quantreg)
> >> for(i in 1:length(taus)){
> >>   f <- rqss(y ~ qss(x, constraint = "I", lambda = 1), tau = taus[i], data = B)
> >>   plot(f, add = TRUE, col = i)
> >> }
> >> # However, the same code with data = D, does not.  Why?
>
> ______________________________________________
> 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.



More information about the R-help mailing list