Reputation: 4282
I am trying to make a faceted plot in ggplot2 of the coefficients on the regressors from two linear models with the same predictors. The data frame I constructed is this:
r.together>
reg coef se y
1 (Intercept) 5.068608671 0.6990873 Labels
2 goodTRUE 0.310575129 0.5228815 Labels
3 indiaTRUE -1.196868662 0.5192330 Labels
4 moneyTRUE -0.586451273 0.6011257 Labels
5 maleTRUE -0.157618168 0.5332040 Labels
6 (Intercept) 4.225580743 0.6010509 Bonus
7 goodTRUE 1.272760149 0.4524954 Bonus
8 indiaTRUE -0.829588862 0.4492838 Bonus
9 moneyTRUE -0.003571476 0.5175601 Bonus
10 maleTRUE 0.977011737 0.4602726 Bonus
The "y" column is a label for the model, reg are the regressors and coef and se are what you would think.
I want to plot:
g <- qplot(reg, coef, facets=.~y, data = r.together) + coord_flip()
But when I try to display the plot, I get:
> print(g)
Error in names(df) <- output :
'names' attribute [2] must be the same length as the vector [1]
What's strange is that
qplot(reg, coef, colour=y, data = r.together) + coord_flip()
plots as you would expect.
Upvotes: 3
Views: 424
Reputation: 1775
Could be y a reserved word?
r.together=data.frame(
reg=c("(Intercept)", "goodTRUE", "indiaTRUE", "moneyTRUE", "maleTRUE", "(Intercept)", "goodTRUE", "indiaTRUE", "moneyTRUE", "maleTRUE"),
coef=c(5.068608671, 0.310575129, -1.196868662, -0.586451273, -0.157618168, 4.225580743, 1.272760149, -0.829588862, -0.003571476, 0.977011737),
se=c(0.6990873, 0.5228815, 0.519233, 0.6011257, 0.533204, 0.6010509, 0.4524954, 0.4492838, 0.5175601, 0.4602726),
yy= c("Labels", "Labels", "Labels", "Labels", "Labels", "Bonus", "Bonus", "Bonus", "Bonus", "Bonus")
)
yy seems to work
g <- qplot(reg, coef, data = r.together,facets=. ~ yy) +coord_flip()
Upvotes: 2
Reputation: 30445
I don't know why, but the name y
seems to be the problem. If you change it, then it works
r.together <- read.table(textConnection("
reg coef se myfactor
(Intercept) 5.068608671 0.6990873 Labels
goodTRUE 0.310575129 0.5228815 Labels
indiaTRUE -1.196868662 0.5192330 Labels
moneyTRUE -0.586451273 0.6011257 Labels
maleTRUE -0.157618168 0.5332040 Labels
(Intercept) 4.225580743 0.6010509 Bonus
goodTRUE 1.272760149 0.4524954 Bonus
indiaTRUE -0.829588862 0.4492838 Bonus
moneyTRUE -0.003571476 0.5175601 Bonus
maleTRUE 0.977011737 0.4602726 Bonus
"),header=T)
qplot(reg, coef, data = r.together, facets= .~myfactor ) + coord_flip()
Upvotes: 5