簡體   English   中英

從R數據幀列表中清除Inf值

[英]Cleaning Inf values from an R list of dataframes

我一直在處理此響應 (我認為這是一個了不起的構造合理的答案),但是我沒有一個數據框,而是有一個數據框列表。 因此,我一直在嘗試這樣做:

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))

基本上應該替換列表K的每個元素中的Inf值,但我只能得到以下結果:

str(K)

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

孤立時該函數內部的for循環有效,但我無法獲得包含無窮大數據幀的列表。

有什么建議嗎? 問候。

如果K是數據幀列表,則將生成一個新的data.frames清除列表。 Inf2NA函數用NA替換向量v中的所有無限值。

 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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM