如何使用 lm() 修复此无效类型错误?
How can I fix this invalid type error using lm()?
Error in model.frame.default(formula = data$conservationstatus ~ data$latitude, :
invalid type (NULL) for variable 'data$conservationstatus
我有一个数据集(在读取 CSV 文件后称为数据),它包含“保护状态”和“纬度”列。我正在尝试使用
对这两个执行线性回归
lm(data$ConservationStatus ~ data$Latitude, data = data)
但是,我一直收到上述错误。好像是因为我的专栏里面有两个字。我试过 data$Conservation Status、data$'Conservation Status'、data$Conservation.Status,但似乎没有任何效果 :(
我们可以不用data$
指定公式。如果列名有空格,用反引号把列名包起来
model <- lm(`Conservation Status` ~ Latitude, data = data)
可以用一个简单的例子复现
data(iris)
lm(iris$epal.Length ~ iris$Species, iris)
Error in model.frame.default(formula = iris$epal.Length ~ iris$Species,
: invalid type (NULL) for variable 'iris$epal.Length'
并使用正确的语法
lm(Sepal.Length ~ Species, iris)
#Call:
#lm(formula = Sepal.Length ~ Species, data = iris)
#Coefficients:
# (Intercept) Speciesversicolor Speciesvirginica
# 5.006 0.930 1.582
您可能 mis-spelling 一个变量名,检查 colnames(data)
看它是如何拼写的。
例如,
lm(mtcars$MPG ~ mtcars$disp)
# Error in model.frame.default(formula = mtcars$MPG ~ mtcars$disp, drop.unused.levels = TRUE) :
# invalid type (NULL) for variable 'mtcars$MPG'
lm(mtcars$mpg ~ mtcars$disp)
# Call:
# lm(formula = mtcars$mpg ~ mtcars$disp)
# Coefficients:
# (Intercept) mtcars$disp
# 29.59985 -0.04122
注意到 mpg
是 lower-case,不是我第一次尝试的大写。
colnames(mtcars)
# [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
我同意@akrun 的建议,而不是使用 lm(mpg ~ disp, data=data)
,因为命名法(对我来说)似乎更易读,但在那种情况下它会抛出不同的错误,如您所见。
Error in model.frame.default(formula = data$conservationstatus ~ data$latitude, :
invalid type (NULL) for variable 'data$conservationstatus
我有一个数据集(在读取 CSV 文件后称为数据),它包含“保护状态”和“纬度”列。我正在尝试使用
对这两个执行线性回归lm(data$ConservationStatus ~ data$Latitude, data = data)
但是,我一直收到上述错误。好像是因为我的专栏里面有两个字。我试过 data$Conservation Status、data$'Conservation Status'、data$Conservation.Status,但似乎没有任何效果 :(
我们可以不用data$
指定公式。如果列名有空格,用反引号把列名包起来
model <- lm(`Conservation Status` ~ Latitude, data = data)
可以用一个简单的例子复现
data(iris)
lm(iris$epal.Length ~ iris$Species, iris)
Error in model.frame.default(formula = iris$epal.Length ~ iris$Species, : invalid type (NULL) for variable 'iris$epal.Length'
并使用正确的语法
lm(Sepal.Length ~ Species, iris)
#Call:
#lm(formula = Sepal.Length ~ Species, data = iris)
#Coefficients:
# (Intercept) Speciesversicolor Speciesvirginica
# 5.006 0.930 1.582
您可能 mis-spelling 一个变量名,检查 colnames(data)
看它是如何拼写的。
例如,
lm(mtcars$MPG ~ mtcars$disp)
# Error in model.frame.default(formula = mtcars$MPG ~ mtcars$disp, drop.unused.levels = TRUE) :
# invalid type (NULL) for variable 'mtcars$MPG'
lm(mtcars$mpg ~ mtcars$disp)
# Call:
# lm(formula = mtcars$mpg ~ mtcars$disp)
# Coefficients:
# (Intercept) mtcars$disp
# 29.59985 -0.04122
注意到 mpg
是 lower-case,不是我第一次尝试的大写。
colnames(mtcars)
# [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
我同意@akrun 的建议,而不是使用 lm(mpg ~ disp, data=data)
,因为命名法(对我来说)似乎更易读,但在那种情况下它会抛出不同的错误,如您所见。