我尝试使用以下脚本将NaN
值替换为零:
rapply( data123, f=function(x) ifelse(is.nan(x),0,x), how="replace" )
# [31] 0.00000000 -0.67994832 0.50287454 0.63979527 1.48410571 -2.90402836
NaN值显示为零,但当我键入数据框的名称并尝试查看时,该值仍为NaN。
data123$contri_us
# [31] NaN -0.67994832 0.50287454 0.63979527 1.48410571 -2.90402836
我不确定rapply
命令是否实际应用了数据框中的调整,或者只是按照所示替换了值。
知道如何将NaN
的值更改为零吗?
4条答案
按热度按时间qc6wkl3g1#
看起来
is.nan
不像is.na
,它实际上没有 Dataframe 的方法。vwkv1x7d2#
实际上,在R中,这个操作非常简单:
如果矩阵'a'包含一些NaN,您只需要使用以下代码将其替换为0:
如果 Dataframe 'B'包含一些NaN,则只需使用以下代码将其替换为0:
注意
is.nan
(矩阵)与is.na
( Dataframe )的差异。做
产生:
Error in is.nan(b) : default method not implemented for type 'list'
,因为b是 Dataframe 。注:针对小而混乱的错别字进行了编辑
ghg1uchk3#
下面的代码可以满足您的需要:
wj8zmpe14#
下面是一个
tidyverse
解决方案,我用NaN
和NA
生成了样本数据,第一列已经完全完成。然后,我们可以将
mutate_all
与replace
一起应用于 Dataframe :我们已经将
NaN
值替换为零,并且既没有触及NA
值,也没有触及x
列。更新为
dplyr 1.0.0
由于
mutate_all
已弃用,我们现在可以使用across()
重写表达式,如下所示: