如何更好地控制有序因子的 lm() 估计标签?

How can I better control the lm() estimate labels for an ordered factor?

我的数据包含具有多个级别的有序因子变量,例如:

set.seed(1234)
y <- runif(100,0,100)
x <- rep_len(as.character(c(1991:2013)), length.out = 100)
df<-data.frame("x" = factor(x,ordered = TRUE), y)

当我在 lm() 中使用这些数据时,R 以我认为牺牲清晰度的方式更改了估计系数的名称。

summary(lm(data = df, formula = y~x))

产生以下内容:

...Truncated...

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  43.8665     2.9456  14.892   <2e-16 ***
x.L           0.5284    13.9151   0.038    0.970    
x.Q         -17.6699    14.1375  -1.250    0.215    
x.C           0.3310    13.9882   0.024    0.981    
x^4          -0.8420    14.0647  -0.060    0.952    
x^5          20.1605    14.0629   1.434    0.156  

...Truncated...

为了避免这种情况,我可以 "un-order" 这个因素,但这对我的情况来说很不方便。有没有办法强制 R 使用实际的级别名称?另外,仅对前三个估计名称的x.Lx.Qx.C有何解释?

由于缺乏答案,实现这些目标的最佳方法似乎是 "un-order" 因子变量,运行 线性模型,然后 "re-order" 因子变量,如:

df$x <- factor(df$x, ordered = FALSE)
m <- lm(data = df, formula = y~x)
df$x <- factor(df$x, ordered = TRUE)