嗨,亲爱的,我有一个 NaN
问题。我正在处理一个包含许多变量的大型数据集,并且它们有 NaN
。数据是这样的:
z=list(a=c(1,2,3,NaN,5,8,0,NaN),b=c(NaN,2,3,NaN,5,8,NaN,NaN))
我使用此命令将列表强制到数据框,但我得到了:
z=as.data.frame(z)
> is.list(z)
[1] TRUE
> is.data.frame(z)
[1] TRUE
> replace(z,is.nan(z),0)
Error en is.nan(z) : default method not implemented for type 'list'
我强制 z 到数据框,但这还不够,也许有一种形式可以更改列表中的 NaN
。感谢您的帮助。此数据只是一个示例,我的原始数据有 36000 个观察值和 40 个变量。
最佳答案
这是 rapply
的完美用例。
> rapply( z, f=function(x) ifelse(is.nan(x),0,x), how="replace" )
$a
[1] 1 2 3 0 5 8 0 0
$b
[1] 0 2 3 0 5 8 0 0
lapply
也可以工作,但是 rapply
在这种情况下可以正确处理嵌套列表。
关于将列表中的 NaN 值替换为零 (0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15581743/