Из справки setNames в R:
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)
Имена дел теряются.
Мои данные обычно хранятся в виде таблиц, но я хочу, чтобы в графике сохранялись названия дел.Я знаю, что tibbles не поддерживает имена строк.
Я пробовал:
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» и т. Д. Я хочу каким-то образом сохранить имена дел в регрессионной модели вместо значений по умолчанию «1», «2» и т. Д., Используя «setNames», «set_names» или другой метод.
Надеюсь, это понятнее.
Спасибо