R格式NaN功能

时间:2014-04-12 19:11:07

标签: r formatting format latex

我正在尝试找到一个格式函数来抑制R中的NaN输出。我想传递一个double的向量,并使NaN值返回为空而不是{{ 1}}。我正在尝试为Latex表格式输出。这应该很简单吧?有这样的功能吗?

这是我现在得到的:

NaN

这就是我想要的:

> x <- c(seq(1,2,0.2), NaN)
> as.character(x)
> [1] "1"   "1.2" "1.4" "1.6" "1.8" "2"  "NaN"

2 个答案:

答案 0 :(得分:3)

你走了:

R> x <- c(seq(1,2,0.2), NaN)
R> zx <- as.character(x)
R> zx
[1] "1"   "1.2" "1.4" "1.6" "1.8" "2"   "NaN"

现在我们定义一个新函数mattFun()

R> mattFun <- function(x) gsub("NaN", "", as.character(x))

并使用它:

R> zy <- mattFun(x)
R> zy
[1] "1"   "1.2" "1.4" "1.6" "1.8" "2"   ""   
R> 

严肃地说,你只是在寻找简单的模式替代品 正则表达式。 gsub()是提供此功能的几个功能之一。试着阅读正则表达式。

答案 1 :(得分:0)

只需更换&#34; NaN&#34;通过&#34;&#34;:

x <- c(seq(1,2,0.2), NaN)
fofu <- function(x){
   cx <- as.character(x)
   cx[cx=="NaN"] <- ""
   cx
   }
fofu(x)
#[1] "1"   "1.2" "1.4" "1.6" "1.8" "2"   ""

(编辑)

或使用隐式转换缩短时间:

fofu2 <- function(x)  "[<-"(x, is.nan(x), "")
# or ... replace(x, is.nan(x), "")

这比基于gsub的解决方案快两倍(使用上面定义的microbenchmarkx) - 当然,大多数情况下重要的是方便而不是计算时间。