我有一个数据集,它在启动时是一个data.frame,我导出到csv,然后使用fread再次读入。然后它变成data.table。在此步骤之后,我对所有值执行基本计算,这些值会更改一列中的所有值。在此之后,我使用
将data.table更改回data.framedata <- as.data.frame(data)
然后我运行我的脚本。但是,在脚本中间,我在执行lm时遇到以下错误。
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
NA/NaN/Inf in 'y'
我必须执行data.frame到data.table的转换才能执行计算。每当我在没有转换的情况下运行脚本(将其保持为data.frame,而不是执行计算器)时,脚本运行得很好。
知道什么可能导致此错误吗?我怀疑它正处于过渡阶段。
提前致谢。
答案 0 :(得分:2)
阅读错误消息。适合线性回归时,您缺少,非数字或无限响应值。它与数据表无关。
重现问题的简单示例。
dfr <- data.frame(y = c(1, 2, 3, Inf), x = runif(4))
lm(y ~ x, dfr)
## Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
## NA/NaN/Inf in 'y'
如果na.action
的{{1}}参数不是lm
,(或者您没有通过该参数且na.pass
不是getOption("na.action")
) ,然后问题是无限值,因为na.pass
将删除缺失值,na.omit
会给出不同的错误消息。