2017-11-14 4 views
-3

私は2つのデータフレームdf1とdf2を持っています。どちらも240のobsを持っています。 204変数のうちの1つ。私はチェックして、それらのファイルに欠損値またはNA値がないことを確認しました。 Iこの式退行しかし:rの回帰エラー

library(broom) 
fit4 <- lapply(names(df1), function(x){ 
    dd = tidy(lm(df1[[x]] ~ df2[[x]])) 
    data.frame(name = x, dd)}) 

これは、次のエラーメッセージを示しています

lm.fitでのエラー(X、Y、=オフセット、singular.ok = singular.okオフセット、 ...) :NA/NaNの/ Infの「Y」

答えて

1

でエラー自体は、あなたがそれらの値を削除するか、割り当てる必要がありますので、それは、原因NaN値や無限の値である可能性があります、状態としてそれらにゼロ。

データフレーム全体からNaNを削除するには、関数を作成する必要があります(here)。

is.nan.data.frame <- function(x) 
do.call(cbind, lapply(x, is.nan)) 

dd[is.nan(dd)] <- 0 

無限の数字については、questionを参照してください。

dd[!rowSums(!is.finite(dd)),] 

または0でそれらを置き換えるために:

dd[!is.finite(dd)] <- 0 
2より高速な方法は、すべての無限の値を削除します