将data.frame转换为data.table,执行计算,返回data.frame,其余的脚本故障?

时间:2014-02-12 11:23:21

标签: r dataframe data.table

我有一个数据集,它在启动时是一个data.frame,我导出到csv,然后使用fread再次读入。然后它变成data.table。在此步骤之后,我对所有值执行基本计算,这些值会更改一列中的所有值。在此之后,我使用

将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,而不是执行计算器)时,脚本运行得很好。

知道什么可能导致此错误吗?我怀疑它正处于过渡阶段。

提前致谢。

1 个答案:

答案 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会给出不同的错误消息。