2

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

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

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

2 回答 2

2

看来您必须编写自己的rawToChar函数:

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

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

于 2013-09-20T08:46:31.513 回答
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
于 2013-09-20T09:17:13.250 回答