write.table将NaN转换为NA

4
我有一个数据框。
a = data.frame("a"=c(1,2,3,NA,NaN,6),"b"=c(NA,NA,NaN,1,2,3),"c"=c(1,2,NA,NA,5,6))

我正在将它写入文件。
write.table(a,file="t.txt",row.names=FALSE,quote=FALSE,sep="\t")

它将"NaN"转换为"NA"。我想保留原始值。我该怎么做? 我想在我的t.txt中保留NaN和NA。但是我得到了所有的NA。


我们不知道 a 是什么,而且你展示的函数不应该产生任何 NaN 值。然而,你可以传递 na=... 参数来指定你想要的缺失值的外观。 - Justin
我已经编辑了问题。这是复制粘贴错误。 - user1631306
一个技巧是将NaN转换为“NaN”,然后在读取文件时将“NaN”转换为NaN,并使用as.numeric(x)函数将该列转换为数字。 - PascalVKooten
1个回答

8

我不确定有直接的方法,但你可以将列转换为字符,然后写入它(因为你使用了quote=FALSE)。

我不确定是否有直接的方法,但是您可以将列转换为字符,然后写入(因为您使用了quote = FALSE)。

> a[] <- lapply(a, as.character)
> write.table(a,file="t.txt",row.names=FALSE,quote=FALSE,sep="\t")
> str(read.table("t.txt",header=TRUE))
'data.frame':   6 obs. of  3 variables:
 $ a: num  1 2 3 NA NaN 6
 $ b: num  NA NA NaN 1 2 3
 $ c: int  1 2 NA NA 5 6

如果我可以问一个不相关的问题,那么为什么要有 [] - PascalVKooten
3
@aDualinity:由于lapply函数返回一个列表,所以a仍将保持为一个data.frame - Joshua Ulrich

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