我正在尝试实现一些涉及将字符串来回转换为原始字节的内容。在查看NA值的行为时,我注意到以下代码在下面的第一个示例中始终返回“NA”而不是NA。
因此我的问题。如何将NA值传递给raw以便稍后将其作为字符返回?
rawToChar(charToRaw(as.character(NA)))
[1] "NA"
rawToChar(charToRaw("NA"))
[1] "NA"
答案 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)
也许您应该重新定义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