如何解决如何使用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,但似乎没有任何效果:(
解决方法
您可能会错误地拼写变量名,请检查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
是小写字母,而不是我第一次尝试的大写字母。
colnames(mtcars)
# [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
我同意@akrun的建议改为使用lm(mpg ~ disp,data=data)
,因为(对我而言)命名法似乎更具可读性,但是如您所知,在这种情况下它将引发不同的错误。
我们可以指定不带data$
的公式。如果列名中有空格,请使用反引号将列名换行
model <- lm(`Conservation Status` ~ Latitude,data = data)
可以用一个简单的例子复制它
data(iris)
lm(iris$epal.Length ~ iris$Species,iris)
model.frame.default(formula = iris $ epal.Length〜iris $ Species, :变量“ iris $ epal.Length”的无效类型(NULL)
并使用正确的语法
lm(Sepal.Length ~ Species,iris)
#Call:
#lm(formula = Sepal.Length ~ Species,data = iris)
#Coefficients:
# (Intercept) Speciesversicolor Speciesvirginica
# 5.006 0.930 1.582
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。