我正在尝试实现一些涉及来回将字符串转换为原始字节的东西。在查看 NA 值的行为时,我注意到以下代码在下面的第一个示例中始终返回“NA”而不是 NA。
因此我的问题。如何将 NA 值传递给 raw 以便稍后将它们作为字符返回?
rawToChar(charToRaw(as.character(NA)))
[1] "NA"
rawToChar(charToRaw("NA"))
[1] "NA"
看来您必须编写自己的rawToChar
函数:
myRawToChar <- function(x, ...) {
naString <- charToRaw("NA")
if (all.equal(x, naString)) {
return(NA)
}
rawToChar(x, ...)
}
现在myRawToChar(charToRaw("NA"))
将返回NA
而不是"NA"
.
也许您应该重新定义两者charToRaw
并rawTochar
让它们处理缺失值?
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