将列表中的 NaN 值替换为零 (0)

标签 r nan

嗨,亲爱的,我有一个 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/

相关文章:

r - 限制构面图中构面上的类别数量

tensorflow - 训练神经网络 : Mathematical reason for Nan due to batch size

python - 根据另一个具有不同大小的列表替换 nan 的列表 python

ruby - 如何在 Ruby 中声明 NaN(不是数字)?

actionscript-3 - 将 parseInt 与 Actionscript 3 中的 NaN 进行比较

javascript - array.forEach 的奇怪行为

r - 在 R 中执行预测模型的时间

r - ggraph 弧形图剪辑标签文本

r - 使用 gmm 包的矩阵乘法错误

r - 根据条件对多列进行变异,每一列都有不同的设置