Arhn - архитектура программирования

Переименовать по имени переменной list(), а не по индексу в R

Я выполняю регрессии по списку () элементов, используя цикл for, и я хотел бы заменить ссылку на данный ввод списка именем этой переменной, а не ее индексом. Например:

frame <- data.frame(y = rnorm(10), x1 = rnorm(10), x2 = rnorm(10), x3 = rnorm(10) ) 
x.list <- list(frame$x1,frame$x2,frame$x3)  
fit <- list()

for(i in 1:length(x.list)){ fit[[i]] <- summary(lm(frame$y ~ x.list[[i]]))}         
fit

Я хотел бы, чтобы каждый элемент соответствовал «x1», «x2», «x3» вместо «x.list[[i]]». Спасибо за любые мысли по этому поводу.

08.05.2015

  • frame — функция; может быть, вы могли бы назвать это как-то иначе? 09.05.2015

Ответы:


1

Не определяйте x.list, просто перебирайте имена:

fit <- vector("list",3)
for ( i in c("x1","x2","x3") ) fit[[i]] <- summary(lm(frame$y ~ frame[[i]]))

Вместо этого сохраните lms. Вероятно, вам понадобится больше, чем сводка, поэтому просто сохраните lms:

xs     <- c("x1","x2","x3")
xs     <- setNames(xs,xs)
fit_lm <- lapply(xs,function(i)lm(frame$y ~ frame[[i]]))

Вы можете смотреть на summary с lapply(fit_lm,summary), но также смотреть на коэффициенты, с

sapply(fit_lm,`[[`,"coefficients")
#                    x1         x2          x3
# (Intercept) 0.1417501  0.2974165  0.25085281
# frame[[i]]  0.2318912 -0.1468433 -0.08783857
08.05.2015

2

Если вам нужно возвращаемое значение, предпочтительнее lapply:

xs <- names(frame)[-1]

setNames(
  lapply(xs, function(x, dat) {
    f <- as.formula(paste("y", x, sep = "~"))
    summary(lm(f, data = dat))
  }, dat = frame), 
  xs)

Однако та же стратегия будет работать с циклом for.

08.05.2015
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..