将NA值传递给raw和back

时间:2013-09-20 08:17:54

标签: r byte

我正在尝试实现一些涉及将字符串来回转换为原始字节的内容。在查看NA值的行为时,我注意到以下代码在下面的第一个示例中始终返回“NA”而不是NA。

因此我的问题。如何将NA值传递给raw以便稍后将其作为字符返回?

rawToChar(charToRaw(as.character(NA)))
[1] "NA"
rawToChar(charToRaw("NA"))
[1] "NA"

2 个答案:

答案 0 :(得分:2)

您似乎必须编写自己的rawToChar函数:

myRawToChar <- function(x, ...) {
  naString <- charToRaw("NA")
  if (all.equal(x, naString)) {
    return(NA)
  }
  rawToChar(x, ...)
}

现在myRawToChar(charToRaw("NA"))将返回NA而不是"NA"

答案 1 :(得分:0)

也许您应该重新定义charToRawrawTochar以使它们处理缺失的值?

myCharToRaw <- function(x,...) {
  if (is.na(x))  return(NA)
  charToRaw(x, ...)
}

myRawToChar <- function(x, ...) {
  if (is.na(head(x,1)))  return(NA)
  rawToChar(x, ...)
}

然后:

R> myRawToChar(myCharToRaw("NA"))
[1] "NA"
R> myRawToChar(myCharToRaw(NA))
[1] NA