Stata/Rstudio evil attributes

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Stata/Rstudio evil attributes

Koenker, Roger W
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?
______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: Stata/Rstudio evil attributes

Viechtbauer, Wolfgang (SP)
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:[hidden email]] 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?
______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: Stata/Rstudio evil attributes

Koenker, Roger W
Wolfgang,

Thanks, this is _extremely_ helpful.

Roger

> On Apr 10, 2021, at 11:59 AM, Viechtbauer, Wolfgang (SP) <[hidden email]> 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:[hidden email]] 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?

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: Stata/Rstudio evil attributes

R help mailing list-2
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 <[hidden email]> wrote:

>
> Wolfgang,
>
> Thanks, this is _extremely_ helpful.
>
> Roger
>
> > On Apr 10, 2021, at 11:59 AM, Viechtbauer, Wolfgang (SP) <[hidden email]> 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:[hidden email]] 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?
>
> ______________________________________________
> [hidden email] 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.

______________________________________________
[hidden email] 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.