如何对由数字、NA和NaN组成的向量进行四舍五入处理

4

如何对由数字、NA和NaN组成的向量进行舍入才能保持数字顺序,同时不忽略NA或NaN。

x = c(2,3,4,NA,"NaN",3, 5)
round(x,2)  #does not work 

编辑:round(x, 2) 中的错误:数学函数的非数字参数


什么是多模式反射排序? - Amateur
1
我不知道我想要点赞哪一个前两个评论。 - joran
@djhurio:它是一个字符串“NaN”。 - Amateur
这里有一个提示:NaN != "NaN"。修复它。 - user554546
@Jack Maney:我希望我懂足够的R编程,以理解你在说什么。:-( - Amateur
显示剩余2条评论
3个回答

8

x 是一个字符向量,因为它包含字符 "NaN"。将 x 转换为数值型会有帮助。

x = c(2,3,4,NA,"NaN",3, 5)
class(x) # To see the class of x
round(as.numeric(x),2)

2

NaN周围不应该有引号。"NaN"是一个字符字符串;NaN是数值型的。如果这种情况发生在你的玩具示例之外,那么说明你的代码其他地方存在问题。

x = c(2,3,4,NA,NaN,3, 5)
round(x,2)  
# [1]   2   3   4  NA NaN   3   5

我的真实数据中有NaN作为一个字符字符串。 - Amateur
@Amateur - 那你需要修复它。将"NaN"更改为NaN - user554546
1
@Amateur 试着找出哪里引入了“NaN”。你可以通过搜索带引号的“NaN”来实现这一点。 - orizon
1
@Ricardo djhurio的解决方案是可行的,但我认为最好是找出原因,而不是每次想要使用“x”(或其他一些修补程序)时都使用as.numeric(x) - orizon
我想接受两个答案,但是我不能这样做,所以我给两个答案点了赞,因为它们都很有帮助。目前我使用了as.numeric(x),但我也在寻找NaN的原因。 - Amateur
@Amateur,我很高兴我们能够帮助到你。 - orizon

2
  library(plyr)

 round_any(x,1)
  [1]   2   3   4  NA NaN   3   5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接