2014-02-12 19 views
0

我有一个数据集,它是一个data.frame,我将其导出到csv,并使用fread再次读入。然后它变成一个data.table。完成此步骤后,我将对所有值进行基本计算,这些值会更改一列中的所有值。在此之后,我将data.table更改回data.frame使用将data.frame转换为data.table,执行计算,返回data.frame,其余脚本出现故障?

data <- 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,而不是执行calculatons),脚本运行得很好。

任何想法可能会导致此错误?我怀疑它正在转型。

在此先感谢。

+0

你能告诉我们'summary(data)'的结果吗? – Baumann

回答

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参数lmna.pass其他任何东西(或者你没有传递参数,getOption("na.action")na.pass),那么问题是一个无限的价值,因为na.omit将删除缺失值,而na.fail会给出不同的错误消息。