2014-02-18 4 views
-3

Так я это DATA-Неверный тип (NULL) для переменной

hours  A  B  id 
    2.9  1  1  1 
    2.3  1  1  2 
    2.3  1  1  3 
    2.5  1  1  4 
    4.6  1  2  1 

    attach(hayfever.data) 
hayfever.lm = lm(hayfever.data$hours ~ hayfever.data$A * hayfever$B) 

Но я получаю эту ошибку -

Error: invalid type (NULL) for variable 'hayfever.data$A' 

я получаю то же самое, когда я this-

hayfever.lm = lm(hayfever.data$hours ~ A * B) 

кроме изменения имени переменной.

Почему это происходит?

enter image description here

Выход dput

## structure(list(hours = c(2.9, 2.3, 2.3, 2.5, 4.6, 4.4, 4.9, 4.5, 
## 4.8, 4.5, 4.4, 4.6, 5.8, 5.2, 5.2, 5.3, 8.4, 9.1, 8.7, 9, 9.1, 
## 9.4, 8.7, 9.4, 6.4, 5.7, 5.9, 7.2, 9.9, 10.5, 10.6, 12.1, 13.5, 
## 13, 13.3, 16.2), A = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
## 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 
## 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), B = c(1L, 1L, 1L, 1L, 
## 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
## 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L 
##), id = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 
## 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 
## 2L, 3L, 4L, 1L, 2L, 3L, 4L)), .Names = c("hours", "A", "B", "id" 
##), class = "data.frame", row.names = c(NA, -36L)) 
+0

Что выводит 'str (hayfever.data)'? Вы пробовали 'hayfever.lm = lm (hours ~ A * B, data = hayfever.data)'? Кроме того, вы не должны использовать 'attach' ... – ialm

+0

не использовать attach .. когда-либо действительно. – rawr

+0

при запуске str (hayfever.data) Я получаю это- ## 'data.frame': 36 obs. из 1 переменной: ## $ hours ..... A ...... B ...... id: Фактор с 36 уровнями "2,3 1 1 2", ..: 4 1 2 3 9 5 12 7 11 8 ... – praks5432

ответ

1

Нет необходимости использовать attach здесь. Это как вы должны сделать:

lm(hours ~ A * B,data=hayfever.data) 
Call: 
lm(formula = hours ~ A * B, data = hayfever.data) 

Coefficients: 
(Intercept)   A   B   A:B 
     0.4   NA   2.1   NA 

Где данные:

hayfever.data <- read.table(text='hours  A  B  id 
+  2.9  1  1  1 
+  2.3  1  1  2 
+  2.3  1  1  3 
+  2.5  1  1  4 
+  4.6  1  2  1',header=TRUE) 
+0

Я получаю объект «часы» не найден – praks5432

+0

Нет. Я редактирую свой ответ для использования того же имени переменной данных , Должен работать с тобой сейчас. – agstudy

+0

да-то же дело - I часов не найдено – praks5432

1

Если я ввода данных в R, используя выход из вашего dput, ваш код работает.

hayfever.data <- structure(list(hours = c(2.9, 2.3, 2.3, 2.5, 4.6, 4.4, 4.9, 4.5, 
4.8, 4.5, 4.4, 4.6, 5.8, 5.2, 5.2, 5.3, 8.4, 9.1, 8.7, 9, 9.1, 
9.4, 8.7, 9.4, 6.4, 5.7, 5.9, 7.2, 9.9, 10.5, 10.6, 12.1, 13.5, 
13, 13.3, 16.2), A = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), B = c(1L, 1L, 1L, 1L, 
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L 
), id = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 
2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 
2L, 3L, 4L, 1L, 2L, 3L, 4L)), .Names = c("hours", "A", "B", "id" 
), class = "data.frame", row.names = c(NA, -36L)) 

hayfever.lm <- lm(hours ~ A * B, data=hayfever.data) 
hayfever.lm 

# Call: 
# lm(formula = hours ~ A * B, data = hayfever.data) 
# 
# Coefficients: 
# (Intercept)   A   B   A:B 
#  1.9833  0.4208  -0.5542  1.4062 

Существует, вероятно, некоторые сохраняющиеся проблемы в вашей R сессии, может быть, от attach? attach - это зло. Никогда не используйте его. Серьезно, это вызывает много головных болей.

Попробуйте выполнить некоторые рекомендации в комментариях и очистите рабочее пространство, а затем перезапустите сеанс R. Не используйте attach.

Любопытно, что прилагаемый скриншот не соответствует данным, которые я прочитал, с вашего вывода dput.

0

У меня такая же ошибка со швейцарским набором данных. Оказывается, моя проблема связана с чувствительностью к регистру. D'о! В основном, R говорит нам, что ссылочная переменная не существует, поэтому мы, возможно, лучше посмотрим на наше именование/орфографию для решения. Я использую дистрибутив R's Microsoft, так что, возможно, другие не так придирчивы?

> lm(swiss$catholic~swiss$fertility, swiss) 
Error in model.frame.default(formula = swiss$catholic ~ swiss$fertility, : 
    invalid type (NULL) for variable 'swiss$catholic' 
> lm(swiss$Catholic~swiss$Fertility) 

Call: 
lm(formula = swiss$Catholic ~ swiss$Fertility, swiss) 

Coefficients: 
    (Intercept) swiss$Fertility 
     -67.441   1.548 

> 
Смежные вопросы