2017-04-10 4 views
-1

私はthis response(これは私が非常にうまく構築された答えだと思います)で取り組んできましたが、単一のデータフレームではなくデータフレームのリストがあります。リストKのすべての要素にInfの値を置き換えることになっています基本的にはどのデータフレームのRリストからのInf値のクリーニング

head(K[[1]]) 
     a b c 
1981 0.76 0.93 NaN 
1982 Inf 0.33 NaN 
1983 0.25 Inf NaN 
1984 0.77 0.73 Inf 
1985 Inf 0.85 Inf 
1986 0.63 0.56 NaN 

K <- lapply(seq_along(K), function(i) for (j in 1:3) set(K[[i]], which(is.infinite(K[[i]][[j]])), j, NA)) 

が、私はこれだけの結果を得る::だから、私はこれをやろうとしてきた

str(K) 

List of 200 
$ : NULL 
$ : NULL 
$ : NULL 
$ : NULL 
... 

for関数内のループは隔離されているときに機能しますが、無限のデータフレームでリストを取得することはできません。

提案がありますか?よろしくです。 よろしくお願いします。

+0

はあなたの匿名関数の戻り値を確認してください。 – ikop

答えて

2

Kがデータフレームのリストである場合、これはdata.framesの新しいクリーンリストを生成します。 Inf2NA関数は、ベクトルvのすべての無限値をNAに置き換えます。

Inf2NA <- function(v) replace(v, is.infinite(v), NA) 
lapply(K, function(d) replace(d, TRUE, sapply(d, Inf2NA))) 

それは行列のリストを作成するのに十分だ場合、この短いバージョンは十分であろう:

lapply(K, function(d) sapply(d, Inf2NA)) 
+0

ありがとうG. Grothendieck。出来た。 – noriega

関連する問題