从R中的setNames帮助中:
x <- 1:20
y <- setNames(x + (x/4 - 2)^3 + rnorm(20, sd = 3),
paste("O", x, sep = "."))
ww <- rep(1, 20); ww[13] <- 0
summary(lmxy <- lm(y ~ x + I(x^2)+I(x^3) + I((x-10)^2), weights = ww),
cor = TRUE)
variable.names(lmxy)
variable.names(lmxy, full = TRUE) # includes the last
case.names(lmxy)
case.names(lmxy, full = TRUE) # includes the 0-weight case
如果我使用以下方法绘制回归对象:
plot(lmxy, 1)
我可以在图中看到案例名称。 这就是我想要的。
但是,如果数据存储为小标题:
tt = as.tibble(cbind(x, y, ww))
lmxy_tt = lm(y ~ x + I(x^2)+I(x^3) + I((x-10)^2), weights = ww, data = tt)
plot(lmxy_tt, 1)
案例名称丢失。
我的数据通常存储在小标题中,但是我想要一种在情节中维护案例名称的方法。我知道小标题不支持行名。
我尝试过:
plot(lm(setNames(y1, paste("O", x1, sep = ".")) ~ x1 + I(x1^2)+I(x1^3) + I((x1-10)^2), weights = ww1, data = tt), 1)
为了使事情更清楚,这是一个玩具示例,使用了我要实现的mtcars数据集:
library(tidyverse)
cars = mtcars
cars$name = row.names(cars)
cars = as.tibble(cars)
cars = cars %>%
group_by(cyl) %>%
nest() %>%
mutate(model = map(data, ~ lm(set_names(wt, name) ~ hp, data = .x)))
现在,如果我绘制结果:
plot(cars$model[[1]], 1)
我可以看到案例名称为“ 1”和“ 5”,但我希望为汽车型号加标签。 “ Mazda RX4”等。我想以某种方式使用“ setNames”,“ set_names”或其他方法将案例名称保存到回归模型中,而不是将默认值保存为“ 1”,“ 2”等。
希望这更加清楚。
谢谢